Сервисная шина Azure - только один подписчик получает сообщения - PullRequest
0 голосов
/ 22 января 2019

ПРИМЕЧАНИЕ: Исходя из полученных ответов, кажется, что служебная шина Azure не подходит для этой работы.Я оставляю вопрос здесь на случай, если он пригодится кому-либо еще.


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

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

Я попытался удалить вызовдо CompleteAsync в коде, который получает сообщения, но это не имело никакого значения.

Код, который я использую, в точности такой, как показано в этой статье, поэтому нет смысла публиковать все это здесь.

Я уверен, что просто неправильно понял что-то базовое, но я подумал, что идея в том, что темы и подписки позволят вам иметь столько получателей, сколько вам нужно.

Любой, кто сможет объяснить, чтоЯ делаю не так?

Ответы [ 2 ]

0 голосов
/ 22 января 2019

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

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

0 голосов
/ 22 января 2019

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

Подводя итог:

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