Публикация/подписка против производителя/потребителя?

avatar
user432024
26 февраля 2017 в 17:37
15866
4
36

С точки зрения обмена сообщениями с такими системами, как kafka, rabbit, hornet mq, activemq и т. д. Есть ли разница между pub/sub и prod/con или они взаимозаменяемы?

Источник

Ответы (4)

avatar
Shashi
27 февраля 2017 в 04:18
24

Хотя термины "Публикация/Подписка" и "Производитель/Потребитель" связаны с обменом сообщениями, они различны и не могут использоваться взаимозаменяемо.

Публикация/подписка — это шаблон обмена сообщениями, при котором публикация распространяется среди нескольких получателей. Производитель — отправитель сообщений, а потребитель — получатель сообщений. Поставщики и потребители являются неотъемлемой частью шаблонов обмена сообщениями "публикация/подписка" и "точка-точка".

Надеюсь, это поможет.

user432024
27 февраля 2017 в 05:31
0

Но они довольно часто используются взаимозаменяемо. Издатель и подписчик тогда?

Shashi
27 февраля 2017 в 05:44
1

Да, издатель/подписчик и производитель/потребитель взаимозаменяемы, но не Pub/Sub и производитель/потребитель. Издатель/подписчик специально используется в шаблоне обмена сообщениями Pub/Sub, а производитель/потребитель — в шаблоне обмена сообщениями P2P.

Bijan
19 декабря 2021 в 16:43
0

Вы ошибаетесь, я думаю. Дело в том, что когда сообщение потребляется, оно не будет обрабатываться другим потребителем в шаблоне производитель/потребитель. Напротив, сообщение будет отправлено всем подписчикам, когда используется издатель/подписчик (шаблон Observer). *** Поэтому они не должны использоваться взаимозаменяемо!!! ***

avatar
Emm Jk
5 марта 2021 в 12:52
5

В случае производителя-потребителя сообщение, созданное производителем, потребляется только одним потребителем. Даже при n числе потребителей каждое сообщение будет потребляться только одним потребителем. Создавая n сообщений для n потребителей, каждое сообщение будет создаваться одним потребителем (алгоритм циклического перебора).

В отличие от подписчика-издателя, сообщение, созданное издателем, потребляется всеми подписчиками, подписавшимися на определенную очередь. Издатели производят сообщения, в то время как подписчик потребляет сообщение. Сообщения помещаются в очередь подписки .

avatar
Can't Tell
27 ноября 2019 в 13:22
27

Существует разница между моделями публикации/подписки и производителем/потребителем.

Публикация/Подписка: Подписчики подписываются на издателя. Каждое сообщение, которое публикует издатель, отправляется всем подписчикам. То есть все подписчики получают одно и то же сообщение. (Подумайте о подписке на газету или журнал. Все подписчики получают один и тот же журнал или газету)

Производитель/Потребитель: Каждое сообщение, создаваемое производителем, будет потребляться одним потребителем. Это механизм распределения рабочей нагрузки между несколькими потребителями. (Вспомните несколько кассовых аппаратов в супермаркете. Каждый покупатель подходит к одной кассе. Покупатели подобны сообщениям, которые производятся, а кассовые аппараты — это потребители)

Hackerman
30 июля 2021 в 21:54
1

Потребители из разных групп потребителей могут потреблять одно и то же сообщение из темы.

Can't Tell
5 августа 2021 в 09:07
1

@Hackerman consumer group — это термин, относящийся к определенным брокерам сообщений, таким как Kafka.

avatar
Maiden
16 октября 2018 в 11:28
4

Насколько я понимаю - Prod/Consu - производитель производит, а потребитель потребляет созданную задачу. - Издатель/Подписчик. Издатель создает, а Подписчик использует созданную задачу только в том случае, если Подписчик подписан на Издателя.

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

Спасибо

overexchange
8 апреля 2019 в 13:42
0

Это фактический ответ на этот вопрос. Publish-Subscribe включает регистрацию подписчиков перед использованием