Подтвердить что ты не робот

Message Queue vs Message Bus - в чем отличия?

И есть ли они? Для меня MB знает как подписчиков, так и издателей и выступает в роли посредника, уведомляя подписчиков о новых сообщениях (фактически это "толчок" ). MQ, с другой стороны, больше похожа на модель "pull", где потребители выводят сообщения из очереди.

Я полностью отсюда?

4b9b3361

Ответ 1

В целом, когда дело доходит до программных продуктов поставщика, они используются взаимозаменяемо и не имеют сильных различий в терминах push или pull, как вы описываете.

BUS vs. QUEUE действительно представляет собой концепцию наследия, которая в последнее время связана с такими системами, как IBM MQ и Tibco Rendezvous. Первоначально MQ представляла собой систему 1:1, и это действительно очередь для развязки различных систем.

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

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

Однако фраза message-queue также используется для внутренних внутрипоточных сообщений и тому подобное, и в этом контексте использование действительно отличается. Если вы думаете о классическом насосе сообщений Windows, это действительно больше модель выталкивания, которую вы описываете, но это действительно более интра-приложение, чем меж-приложение или межсетевое окно.

Ответ 2

Шина сообщений

Шина сообщений - это инфраструктура обмена сообщениями, позволяющая различным системам взаимодействовать через общий набор интерфейсов (шина сообщений).

enter image description here

Источник: EIP

Очередь сообщений

Основная идея очереди сообщений проста:

  • Два (или более) процесса могут обмениваться информацией посредством доступа к общей очереди сообщений системы.

  • Процесс отправки отправляет через некоторый (OS) модуль передачи сообщений сообщение в очередь, которое может быть прочитано другим процессом

Источник: Дэйв Маршалл

enter image description here

Источник изображения

разница

Очередь сообщений содержит правило FIFO (первое в первом порядке), тогда как в шине сообщений нет.

Заключение

Оба LOOK любят выполнять такую же работу - передавая сообщения между двумя приложениями или модулями или интерфейсами или системами или процессами, за исключением небольшой разницы FIFO

Ответ 3

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

Ответ 4

Между этими двумя концепциями было некоторое размывание линий, так как некоторые продукты теперь поддерживают функции, которые ранее принадлежали только одной или другой категории (например, Azure Service Bus поддерживает оба подхода).

ОЧЕРЕДЬ

Очередь сообщений принимает сообщения от приложения и делает их доступными для одного или нескольких других приложений с помощью метода first-in-first-out (FIFO). Во многих архитектурных сценариях, если приложение A должно отправлять обновления или команды приложениям B и C, отдельные очереди сообщений могут быть настроены для B и C. A будет записывать отдельные сообщения в каждую очередь, и каждое зависимое приложение будет читать из своего собственная очередь (сообщение удаляется при его удалении). Ни B, ни C не должны быть доступны для того, чтобы A отправлял обновления. Каждая очередь сообщений постоянна, поэтому, если приложение перезагрузится, оно начнет вытягиваться из очереди, как только оно будет снова в сети. Это помогает разбить зависимости между зависимыми системами и может обеспечить большую масштабируемость и отказоустойчивость приложений.

BUS

Шина сообщения или служебная шина обеспечивает способ для одного (или более) приложения для передачи сообщений одному или нескольким другим приложениям. Не может быть гарантии первого порядка в первом заказе, и абоненты автобуса могут приходить и уходить без ведома отправителей сообщений. Таким образом, приложение A может быть записано для передачи обновлений состояния в приложение B по шине сообщений. Позже написано приложение C, которое также может извлечь выгоду из этих обновлений. Приложение C может быть настроено для прослушивания шины сообщений и принятия мер на основе этих обновлений, а также без необходимости обновления приложения A. В отличие от очередей, в которых приложение-отправитель явно добавляет сообщения в каждую очередь, шина сообщений использует публикацию/подписать модель. Сообщения публикуются на шине, и любое приложение, подписавшееся на это сообщение, получит его. Такой подход позволяет приложениям следовать принципу "открыто/закрыто", поскольку они становятся открытыми для будущих изменений, оставаясь закрытыми для дополнительной модификации.

ИСТОЧНИК

Ответ 5

Как я вижу, в очереди сообщений создается шина сообщений. Клиенты (т.е. Узлы) могут затем прослушивать шину сообщений. Это особенно верно в случае, когда у вас есть MQ-трансляция сообщений через UDP, другими словами, она отправляет сообщения на широковещательный/многоадресный адрес, не зная или не заботясь о том, кто будет их получать. Для более подробного описания этого сценария вы можете проверить эту статью.

Ответ 6

Service Bus - это более общий термин, чем очередь сообщений.

MQ - это простой FIFO, но есть более сложные способы реализации Service Bus, то есть Event Hub, который является огромным "центром" для обработки сообщений. Помимо функций, предоставляемых MQ, он позволяет хранить сообщения (и, следовательно, использовать несколько подписчиков) и т.д.