Как долго Azure сообщений служебной шины живут после доставки? - PullRequest
0 голосов
/ 27 февраля 2020

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

В Azure Настройка служебной шины портала. У меня есть следующие настройки:

  • Время жизни сообщения (дни)
  • Время блокировки (в секундах)
  • История обнаружения дубликатов (в минутах)
  • Максимальное количество доставок

Появляется, как только я первоначально получаю сообщение (но не отвечаю) ), что сообщение продолжает получать повторно. Указывает ли «Время жизни сообщения», как долго оно будет повторяться?

Будет ли сценарий «получать, но закрываться много часов спустя» работать с тем, как функционирует шина обслуживания?

Ответы [ 2 ]

0 голосов
/ 27 февраля 2020
Сервисная шина

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

Message time to live используется для указания того, как долго сообщение может оставаться в очереди, не будучи поднятым. После этой задержки он будет автоматически удален из очереди.

0 голосов
/ 27 февраля 2020

Описание этих настроек можно прочитать здесь: https://docs.microsoft.com/en-us/dotnet/api/microsoft.servicebus.messaging.queuedescription?view=azure-dotnet.

По этой ссылке:

  • Время сообщения (в днях) ) : получает или устанавливает время сообщения по умолчанию в качестве действительного значения. Это время, по истечении которого сообщение истекает, начиная с момента отправки сообщения в служебную шину. Это значение по умолчанию, используемое, когда TimeToLive не установлено для самого сообщения. Сообщения старше их значения TimeToLive истекают и больше не сохраняются в хранилище сообщений. Подписчики не смогут получать сообщения с истекшим сроком. Сообщение может иметь более низкое значение TimeToLive, чем указано здесь, но по умолчанию для TimeToLive установлено значение MaxValue. Таким образом, это свойство становится значением времени по умолчанию для действующего значения, применяемого к сообщениям.
  • Продолжительность блокировки (секунды) : Получает или задает продолжительность временной блокировки; то есть время, в течение которого сообщение блокируется для других получателей. Максимальное значение для LockDuration составляет 5 минут; значение по умолчанию - 1 минута.
  • История обнаружения дубликатов (минут) : Получает или задает структуру TimeSpan, которая определяет продолжительность истории обнаружения дубликатов. Значение по умолчанию: 10 минут.
  • Максимальное количество доставок : получение или установка максимального количества доставок. После этого числа доставок сообщение автоматически прерывается.

После того, как я изначально получаю сообщение (но не отвечаю), появляется сообщение, что сообщение продолжает отправляться повторно. Указывает ли «Время сообщения на жизнь», как долго он будет повторяться?

Не совсем. Количество попыток повторения сообщения зависит от Max Delivery Count. Как только сообщение доставлено столько раз, оно будет отправлено в очередь недоставленных сообщений.

Сообщение Time-to-Live определяет период времени, после которого сообщение будет удалено из очереди. Он может быть окончательно удален или отправлен в очередь недоставленных сообщений, если для свойства EnableDeadLetteringOnMessageExpiration установлено значение true.

...