메시지 찾아보기Message browsing

메시지 찾아보기 또는 보기를 사용 하 여 진단 및 디버깅을 위해 Service Bus 클라이언트가 큐 또는 구독의 모든 메시지를 열거할 수 있습니다.Message browsing, or peeking, enables a Service Bus client to enumerate all messages in a queue or a subscription, for diagnostic and debugging purposes.

큐에 대 한 피킹 (peeking) 작업은 또는 루프를 사용 하 여 즉시 가져올 수 있는 메시지 뿐만 아니라 큐에 있는 모든 메시지를 반환 합니다 Receive() OnMessage() .The peek operation on a queue returns all messages in the queue, not only the ones available for immediate acquisition with Receive() or the OnMessage() loop. 각 메시지의 State 속성은 메시지가 활성(수신 가능)인지, 지연되었는지 또는예약되었는지를 알려줍니다.The State property of each message tells you whether the message is active (available to be received), deferred, or scheduled. 구독에 대 한 피킹 (peeking) 작업은 구독 메시지 로그에 있는 예약 된 메시지를 제외한 모든 메시지를 반환 합니다.The peek operation on a subscription returns all messages except scheduled messages in the subscription message log.

사용 되 고 만료 된 메시지는 비동기 "가비지 수집" 실행에 의해 정리 됩니다.Consumed and expired messages are cleaned up by an asynchronous "garbage collection" run. 이 단계는 메시지가 만료 된 직후에 반드시 발생 하는 것은 아닙니다.This step may not necessarily occur immediately after messages expire. 그 이유는가 Peek 이미 만료 된 메시지를 반환할 수 있기 때문입니다.That's why, Peek may return messages that have already expired. 이러한 메시지는 다음에 큐 또는 구독에서 수신 작업이 호출 될 때 제거 되거나 배달 되지 않습니다.These messages will be removed or dead-lettered when a receive operation is invoked on the queue or subscription the next time. 큐에서 지연 된 메시지를 복구 하려고 할 때이 동작을 염두에 두어야 합니다.Keep this behavior in mind when attempting to recover deferred messages from the queue. 만료 된 메시지는 Peek에서 반환 되는 경우에도 다른 방법으로 인해 더 이상 일반 검색에 적합 하지 않습니다.An expired message is no longer eligible for regular retrieval by any other means, even when it's being returned by Peek. 피킹 (Peeking)은 로그의 현재 상태를 반영 하는 진단 도구 이므로 이러한 메시지를 반환 하는 것은 의도 된 것입니다.Returning these messages is by design as Peek is a diagnostics tool reflecting the current state of the log.

또한 Peek는 다른 수신자가 현재 처리 중인 메시지를 반환 합니다.Peek also returns messages that were locked and are currently being processed by other receivers. 그러나 Peek는 연결 되지 않은 스냅숏을 반환 하므로 메시지의 잠금 상태는 피킹 메시지에서 관찰할 수 없습니다.However, because Peek returns a disconnected snapshot, the lock state of a message can't be observed on peeked messages. LockedUntilUtcLockToken 속성은 응용 프로그램에서 읽으려고 할 때 InvalidOperationException 를 throw 합니다.The LockedUntilUtc and LockToken properties throw an InvalidOperationException when the application attempts to read them.

Peek APIPeek APIs

Peek/PeekAsyncPeekBatch/PeekBatchAsync 메서드는 .net 및 Java 클라이언트 라이브러리와 수신자 개체: MessageReceiver, messagesession 에 있습니다.The Peek/PeekAsync and PeekBatch/PeekBatchAsync methods exist in .NET and Java client libraries and on receiver objects: MessageReceiver, MessageSession. 피킹 (peeking)은 큐, 구독 및 각각의 배달 못 한 편지 큐에서 작동 합니다.Peek works on queues, subscriptions, and their respective dead-letter queues.

반복적으로 호출 되 면 피킹 (peeking )은 큐 또는 구독 로그의 모든 메시지를 순서 대로 사용 가능한 가장 낮은 시퀀스 번호에서 가장 높은 순서로 열거 합니다.When called repeatedly, Peek enumerates all messages in the queue or subscription log, in order, from the lowest available sequence number to the highest. 메시지가 최종적으로 검색 될 수 있는 순서가 아니라 메시지가 큐에 배치 되는 순서입니다.It's the order in which messages were enqueued, not the order in which messages might eventually be retrieved.

PeekBatch는 여러 메시지를 검색하여 열거형으로 반환합니다.PeekBatch retrieves multiple messages and returns them as an enumeration. 메시지가 없는 경우 열거 개체는 null이 아니고 비어 있습니다.If no messages are available, the enumeration object is empty, not null.

SequenceNumber 와 함께 메서드의 오버 로드를 사용 하 여를 시작 하 고 매개 변수가 없는 메서드 오버 로드를 호출 하 여 추가로 열거할 수도 있습니다.You can also use an overload of the method with a SequenceNumber at which to start, and then call the parameterless method overload to enumerate further. PeekBatch 는 동등하게 작동하지만 메시지 집합을 모두 한번에 검색합니다.PeekBatch functions equivalently, but retrieves a set of messages all at once.

다음 단계Next steps

Service Bus 메시징에 대해 자세히 알아보려면 다음 항목을 참조하세요.To learn more about Service Bus messaging, see the following topics: