Можете ли вы заполнить пробелы в этом описании служебной шины? - PullRequest
0 голосов
/ 01 ноября 2018

Я новичок в обслуживании автобусов и пытаюсь лучше понять детали. Рассмотрим следующее утверждение:

"Если максимальный счет доставки для сообщения превышен для подписка, то система обмена сообщениями помещает сообщение на мертвых подпочта письма "

Пожалуйста, подтвердите правильность моего следующего понимания:

  • У служебного автобуса есть темы
  • Темы у подписчиков
  • Когда сообщение добавляется в тему, оно отправляется подписчикам

Можете ли вы объяснить понятие «максимальное количество доставок» в этом контексте? Можете ли вы назвать конкретный тип объекта в Azure, который пытается доставить это сообщение? Я предполагаю, что неудачная доставка означает, что абонент находится в автономном режиме или находится в каком-то состоянии, когда он не получает сообщение или отклоняет сообщение? Это правильно?

Если служебная шина обнаруживает внутреннюю ошибку при попытке доставить сообщение, то я предполагаю, что это не будет учитываться в числе «максимальное количество доставок», верно? Можете ли вы в общих чертах описать процесс, в котором шина пытается отправить сообщение подписчику, но доставка не удалась? Каковы общие типы ответов на эту попытку отправки, которые увеличивают число неудачных попыток доставки? Кроме того, можете ли вы описать процесс доступа к очереди недоставленных писем в Azure?

1 Ответ

0 голосов
/ 02 ноября 2018

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

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

Сообщения в пути с пустыми буквами можно получить, используя следующий код:

MessagingFactory factory = MessagingFactory.CreateFromConnectionString(connectionString);
var deadLetterPath = SubscriptionClient.FormatDeadLetterPath(topicPath,subscriptionName);
var Receiver = factory.CreateMessageReceiver(deadLetterPath, ReceiveMode.ReceiveAndDelete);
...