방법: 메시지 피킹(Peeking)
업데이트: 2007년 11월
Peek 메서드를 사용하면 큐에서 메시지를 제거하지 않고 큐의 첫 번째 메시지를 볼 수 있습니다. 이렇게 하면 다른 응용 프로그램이나 구성 요소에서 처리할 메시지를 검색할 수 있도록 하면서 구성 요소가 큐에서 정보를 얻을 수 있습니다.
![]() |
---|
Peek를 사용하면 큐의 첫 번째 메시지만 볼 수 있습니다. 이 메시지는 피킹할 때 큐에서 제거되지 않기 때문에 그 다음 메시지는 피킹할 수 없습니다. 큐에서 메시지를 삭제하지 않고 해당 큐의 모든 메시지를 보려면, GetAllMessages 메서드 또는 GetMessageEnumerator 메서드를 사용할 수 있습니다. 자세한 내용은 큐와 메시지 컬렉션을 참조하십시오. |
Peek 메서드를 호출할 때 큐에 메시지가 없으면 이 메서드는 메시지가 도착할 때까지 기다립니다. 메서드가 지정된 시간 동안만 기다리도록 하려면 제한 시간을 지정하면 됩니다. 제한 시간은 TimeSpan 개체로 지정합니다. 대부분 제한 시간은 0(메시지를 검사하고 기다리지 않음)이나 기본값 무한대(무제한 기다림)로 설정됩니다. 다음 구문을 사용하여 코드에서 이 값을 설정할 수 있습니다.
msg.TimeToBeReceived = System.Messaging.Message.InfiniteTimeout
msg.TimeToBeReceived = System.Messaging.Message.InfiniteTimeout;
msg.set_TimeToBeReceived(System.Messaging.Message.InfiniteTimeout);
속성 창에서 TimeToBeReceived 속성을 설정해도 이렇게 설정할 수 있습니다.
![]() |
---|
종속 클라이언트를 사용하는 경우 클라이언트 컴퓨터의 시계가 메시지 큐를 실행하는 서버의 시계와 동기화되어야 합니다. 그렇지 않으면 TimeToBeReceived 속성이 InfiniteTimeout이 아닌 메시지를 보낼 때 예상치 않은 결과가 발생할 수도 있습니다. |
피킹은 동기 또는 비동기일 수 있습니다. 자세한 내용은 방법: 비동기적으로 메시지 받기를 참조하십시오.
동기적으로 메시지를 피킹하려면
MessageQueue 구성 요소의 인스턴스를 만들고 Path 속성을 참조할 큐로 설정합니다. 자세한 내용은 방법: MessageQueue 구성 요소 인스턴스 만들기를 참조하십시오.
Peek 메서드를 호출하여 큐의 첫 번째 메시지에 대한 데이터를 가져옵니다. 선택적으로 Peek 메서드에 대해 시간 제한을 지정하려면 메서드가 메서드의 인수로 대기하는 시간을 TimeSpan 개체로 입력합니다.
예를 들어, 다음 코드에서는 Peek 메서드를 사용하여 큐의 첫 번째 메시지에 대한 정보를 반환하고 표시하는 방법을 보여 줍니다.
Public Sub LookFirstMessage() Dim NewQueue As New System.Messaging.MessageQueue(".\MyQueue") Dim FirstMessage As System.Messaging.Message FirstMessage = NewQueue.Peek Dim targetNames() As String = {"System.String,mscorlib"} FirstMessage.Formatter = _ New System.Messaging.XmlMessageFormatter(targetNames) Dim label As String = CStr(FirstMessage.Label) End Sub
public void LookFirstMessage() { System.Messaging.MessageQueue newQueue = new System.Messaging.MessageQueue(".\\MyQueue"); System.Messaging.Message firstMessage; string[] types = { "System.String,mscorlib" }; firstMessage = newQueue.Peek(); firstMessage.Formatter = new System.Messaging.XmlMessageFormatter(types); string label = firstMessage.Label.ToString(); }
참고 항목
작업
방법: MessageQueue 구성 요소 인스턴스 만들기