Очереди сообщений: есть ли вариант использования для нескольких потребителей, чтобы потреблять сообщение? - PullRequest
0 голосов
/ 28 апреля 2019

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

Если мы настроим очередь, где издателем является служба, которая выбирает статус знаменитости, а потребителем являются отдельные подписчики. Но с миллионами подписчиков, кто бы ни получил это сообщение первым, увидит обновление, а другие - нет? Какую общую схему использовать здесь, чтобы каждый из ее последователей видел обновление и не «конкурировал» друг с другом, чтобы сначала получить сообщение?

1 Ответ

0 голосов
/ 29 апреля 2019

Полагаю, вы думаете о системе очередей, как о способной только устанавливать двухточечную связь, т. Е. Производитель ставить в очередь потребителя.Это отчасти правильно.Большинство систем массового обслуживания имеют как минимум два шаблона:

  1. Производитель-потребитель. В этом сценарии сообщение доставляется только одному потребителю, т. Е. Если есть несколько потребителей, они конкурируют друг с другом.другой, чтобы получить сообщение из «очереди».

  2. Публикация-подписка: здесь издатели помещают сообщение в «тему», а потребители подписываются на эту тему, чтобы получать сообщения.Потребители не конкурируют - каждый потребитель получает все сообщения после подписки.

В вашем примере это шаблон публикации-подписки в действии.Базовая реализация может отличаться, но основной шаблон - шаблон публикации-подписки.

См .: https://stackoverflow.com/a/42477769/6886283

...