Поделиться через


Отсрочка сообщений

Когда клиент очереди или подписки получает сообщение, которое требуется обработать, но в настоящее время это невозможно из-за особых обстоятельств, он может "отложить" получение этого сообщения. Сообщение остается в очереди или подписке, но игнорируется.

Примечание.

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

Примеры сценариев

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

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

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

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

Получение отложенных сообщений

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

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

Следующие шаги

Опробуйте примеры на выбранном языке, чтобы изучить возможности Служебной шины 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 года, они больше не будут получать официальную поддержку и обновления от Майкрософт. Дополнительные сведения см. в объявлении о выходе на пенсию в службу поддержки.