Мы используем очередь сообщений служебной шины Azure для обработки некоторых действий, которые выполняются сторонним API, проблема у нас не работает сторонний API, мы хотим временно приостановить очередь, чтобы мы могли удерживать сообщение до третьей стороны. служба снова начинает работать, или есть другой способ сохранить сообщения, чтобы мы могли повторно обработать их.
Временно приостановить: очередь сообщений служебной шины Azure
Ответы (4)
Судя по комментариям, именно функция Azure вызывает сторонний API, который может дать сбой. В этом случае отключение функции Azure может быть более простой подход - никаких попыток обработки, никаких повторных попыток отправки сообщений, никаких изменений в пространстве имен / объектах служебной шины Azure. Если вы уверены, что можете повторно включить функцию Azure, сообщения будут обрабатываться снова.
Вы можете изменить состояние очереди на ReceiveDisabled. Это поможет остановить триггер функции Azure.
Состояния приостановки служебной шины
Очереди, темы и подписки могут быть временно приостановлены. Приостановление переводит объект в отключенное состояние, в котором все сообщения сохраняются в хранилище. Однако сообщения не могут быть удалены или добавлены, и соответствующие операции протокола приводят к ошибкам.
Приостановка или повторная активация может выполняться либо пользователем, либо системой. Система приостанавливает работу объектов только из-за серьезных административных причин, таких как превышение лимита расходов на подписку. Сущности, отключенные системой, не могут быть повторно активированы пользователем, но восстанавливаются после устранения причины приостановки.
В портале раздел Properties
для соответствующей сущности позволяет изменять состояние; на следующем снимке экрана показан переключатель очереди: Примечание: портал позволяет только полностью отключить очереди (очередь приостановлена).
Дополнительные сведения можно найти в этой статье а>.
Используйте режим PeekLock для очереди служебной шины.
Таким образом, вы уже можете получить сообщение и начать его обработку до того, как оно будет удалено из очереди. Если третья сторона недоступна, вы можете вызвать AbandonAsync, который вернет сообщение в очередь. В случае, если сторонняя сторона слишком долго остается в автономном режиме, ваши сообщения должны попасть в некоторую очередь недоставленных сообщений, откуда вы можете переместить сообщения обратно в исходную очередь, где они могут быть снова обработаны.
Дополнительные сведения: https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-queues-topics-subscriptions