Бөлісу құралы:


Просмотр или просмотр сообщений

Просмотр сообщений или быстрое редактирование позволяет клиенту служебной шины перечислить все сообщения, находящиеся в очереди или подписке, для диагностических целей и отладки.

Операция просмотра для очереди или подписки возвращает не более запрошенного количества сообщений. В следующей таблице показаны типы сообщений, возвращаемых операцией просмотра.

Тип сообщений Включено
Активные сообщения Да
Недоставленные сообщения No
Заблокированные сообщения Да
Отложенные сообщения Да
Просроченные сообщения Может быть (до того, как они мертвые письма)
Запланированные сообщения Да для очередей. Нет для подписок

Недоставленные сообщения

Чтобы просмотреть недоставленные сообщения очереди или подписки, операция просмотра должна выполняться в очереди недоставленных писем, связанной с очередью или подпиской. Дополнительные сведения см. в разделе о доступе к очередям недоставленных сообщений.

Просроченные сообщения

Просроченные сообщения могут быть включены в результаты, возвращаемые из операции "Просмотр". Использованные и просроченные сообщения очищаются с помощью асинхронного запуска "сборки мусора". Этот шаг может не обязательно происходит сразу после истечения срока действия сообщений. Поэтому операция просмотра может возвращать сообщения, которые уже истекли. Эти сообщения будут удалены или не доставлены, когда операция получения будет применена к очереди или подписке в следующий раз. Это особенно важно учитывать при попытке восстановления отложенных сообщений из очереди.

Сообщение, срок действия которого истек, больше не соответствует требованиям для получения любым другим способом, даже после его возврата Peek. Возвращение этих сообщений предусмотрено разработчиком, так как быстрое редактирование — это инструмент диагностики, отражающий текущее состояние журнала.

Заблокированные сообщения

Операция просмотра также возвращает сообщения, которые были заблокированы и в настоящий момент обрабатываются другими получателями. Но в связи с тем, что Peek возвращает отключенные моментальные снимки, состояние блокировки сообщения не может быть соблюдено для просмотренных сообщений.

Отложенные сообщения

Отложенные сообщения остаются в основной очереди вместе с другими активными сообщениями (в отличие от недоставленных сообщений, находящихся в подочереди), но их больше невозможно получить с помощью обычных операций получения. Отложенные сообщения можно будет обнаружить посредством обзора сообщений, если приложение потеряет их.

Чтобы получить отложенное сообщение, владелец отвечает за запоминание номера последовательности по мере его отсрочки. Любой получатель, который знает порядковый номер отложенного сообщения, может позже получить сообщение с помощью методов получения, которые принимают порядковый номер в качестве параметра. Дополнительные сведения о порядковых номерах см. в статье Последовательность сообщений и метки времени.

Интерфейсы API просмотра

Операция просмотра работает для очередей, подписок и их очередей недоставленных сообщений.

При повторяющихся вызовах операция просмотра перечисляет все сообщения, которые существуют в очереди или подписке, по возрастанию порядкового номера. Это порядок, в котором сообщения были поставлены в очередь, а не порядок, в котором сообщения со временем могут быть получены.

В операцию просмотра можно также передать параметр SequenceNumber. Он используется для определения того, откуда начать просмотр. Последующие вызовы операции просмотра можно выполнять без указания параметра для дальнейшего перечисления.

Максимальное количество сообщений

Можно указать максимальное количество сообщений, которые требуется вернуть. Но нет способа гарантировать минимальный размер пакета. Количество возвращенных сообщений зависит от нескольких факторов, наиболее влияющих на скорость передачи сообщений сети клиенту. 

Ниже приведен пример фрагмента кода для просмотра всех сообщений с помощью пакета SDK для .NET. Его SequenceNumber​ можно использовать для отслеживания последнего просмотра сообщения и начала просмотра в следующем сообщении.

using Azure.Messaging.ServiceBus;

// Create a Service Bus client for your namespace
ServiceBusClient client = new ServiceBusClient("NAMESPACECONNECTIONSTRING");

// Create Service Bus receiver for your queue in the namespace
ServiceBusReceiver receiver = client.CreateReceiver("QUEUENAME");

// Peek operation with max count set to 5
var peekedMessages = await receiver.PeekMessagesAsync(maxMessages: 5);

// Keep receiving while there are messages in the queue
while (peekedMessages.Count > 0)
{
    int counter = 0; // To get the sequence number of the last peeked message
    int countPeekedMessages = peekedMessages.Count;

    if (countPeekedMessages > 0)
    { 
        // For each peeked message, print the message body
        foreach (ServiceBusReceivedMessage msg in peekedMessages)
        {
            Console.WriteLine(msg.Body);
            counter++;
        }
        Console.WriteLine("Peek round complete");
        Console.WriteLine("");
    }

    // Start receiving from the message after the last one
    var fromSeqNum = peekedMessages[counter-1].SequenceNumber + 1;
    peekedMessages = await receiver.PeekMessagesAsync(maxMessages: 5, fromSequenceNumber: fromSeqNum);
}

В следующем примере выходных данных показано, как просмотреть очередь с 13 сообщениями в нем.

Message 1
Message 2
Message 3
Message 4
Message 5
Peek round complete

Message 6
Message 7
Message 8
Message 9
Message 10
Peek round complete

Message 11
Message 12
Message 13
Peek round complete

Опробуйте примеры на выбранном языке, чтобы изучить возможности Служебной шины Azure.

Найдите примеры для более старых клиентских библиотек .NET и Java:

30 сентября 2026 г. мы удалим библиотеки пакета SDK Служебная шина Azure WindowsAzure.ServiceBus, Microsoft.Azure.ServiceBus и com.microsoft.azure.servicebus, которые не соответствуют рекомендациям по пакету SDK Azure. Мы также завершим поддержку протокола SBMP, поэтому вы больше не сможете использовать этот протокол после 30 сентября 2026 года. Перейдите в последние библиотеки пакета SDK Azure, которые предлагают критически важные обновления системы безопасности и улучшенные возможности до этой даты.

Хотя старые библиотеки по-прежнему могут использоваться после 30 сентября 2026 года, они больше не будут получать официальную поддержку и обновления от Майкрософт. Дополнительные сведения см. в объявлении о выходе на пенсию в службу поддержки.