#azure #azureservicebus #azure-servicebus-topics #azure-servicebus-subscriptions
#azure #azureservicebus #azure-servicebus-темы #azure-servicebus-подписки
Вопрос:
Я работаю над темой Azure ServiceBus-Подписки. Я создал одну тему и две подписки в пространстве имен Service Bus. В моем текущем приложении я могу отправлять сообщения в раздел, после чего я получаю сообщения с помощью подписчиков.
Но всякий раз, когда один подписчик будет читать сообщения из темы, сообщения будут отправлены в очередь мертвых писем. Вот почему второй подписчик не сможет читать сообщения из темы.
Я написал эту строку в своем коде после обработки сообщения из темы
await subscriptionClient.CompleteAsync(message.SystemProperties.LockToken);
Я следовал этой документации для реализации вышеупомянутого сценария.
Итак, кто-нибудь может подсказать мне, как читать сообщения из темы, используя несколько подписчиков одновременно.
Ответ №1:
всякий раз, когда один подписчик будет читать сообщения из темы, сообщения отправляются в очередь для неработающих писем. Вот почему второй подписчик не сможет читать сообщения из темы.
Либо произошла логическая ошибка обработки, и сообщение повторяется до тех пор, пока оно не будет перемещено в очередь нерассмотренных писем, либо у вас MaxDeliveryCount
установлена одна попытка обработки. В любом случае, проверьте DeadLetterReason
и DeadLetterErrorDescription
заголовки / свойства на предмет причины, по которой сообщение было перемещено в очередь просроченных писем.
кто-нибудь может подсказать мне, как читать сообщения из темы, используя несколько подписчиков одновременно.
Служебная шина Azure поддерживает шаблон конкурирующих потребителей, вам не нужно делать ничего особенного.
Комментарии:
1. @Спасибо, Шон, я установил
Max Delivery Count
как 1 для своего подписчика. И я проверил deadLetterReason в DLQ, который содержит сообщение какMaxDeliveryCountExceeded
. Например, если у меня 3 подписчика в одной теме, то мне нужно задать 3 какMax Delivery Count
правильно ли это?2. Предлагаю ознакомиться с режимом доставки
PeekLock
и шаблоном конкурирующих потребителей . Это две разные вещи, которые помогут понять, как использоватьMaxDeliveryCount
(учет сбоев в обработке, периодических проблем и т.д.) И как используются посреднические сообщения. Если вы хотите, чтобы каждый подписчик получал сообщение, вам потребуется иметь объект подписки для каждого подписчика . Вот как работает pub / sub.