Между этими двумя понятиями произошло некоторое размывание границ, поскольку некоторые продукты теперь поддерживают функции, которые ранее принадлежали только одной или другой категории (например, Azure Service Bus поддерживает оба подхода).
ОЧЕРЕДЬ
Очередь сообщений получает сообщения от приложения и делает их доступными для одного или нескольких других приложений способом «первым пришел - первым вышел» (FIFO). Во многих архитектурных сценариях, если приложению A необходимо отправить обновления или команды приложениям B и C, то для B и C могут быть установлены отдельные очереди сообщений. A будет записывать отдельные сообщения в каждую очередь, и каждое зависимое приложение будет читать из своего собственная очередь (сообщение удаляется при удалении из очереди). Ни B, ни C не должны быть доступны, чтобы A мог отправлять обновления. Каждая очередь сообщений является постоянной, поэтому, если приложение перезапустится, оно начнет извлекать из своей очереди, как только оно вернется в оперативный режим. Это помогает нарушать зависимости между зависимыми системами и может обеспечить большую масштабируемость и отказоустойчивость для приложений.
BUS
Шина сообщений или служебная шина обеспечивает способ для одного (или нескольких) приложений передавать сообщения одному или нескольким другим приложениям. Может не быть никакой гарантии заказа «первым пришел - первым вышел», и абоненты автобуса могут приходить и уходить без ведома отправителей сообщений. Таким образом, приложение A может быть написано для передачи обновлений статуса приложению B через шину сообщений. Позже написано приложение C, которое также может воспользоваться этими обновлениями. Приложение C может быть настроено на прослушивание шины сообщений и выполнение действий на основе этих обновлений, не требуя обновления приложения A. В отличие от очередей, когда отправляющее приложение явно добавляет сообщения в каждую очередь, шина сообщений использует публикацию / подписаться на модель. Сообщения публикуются на шине, и любое приложение, подписавшееся на такого рода сообщения, получит его. Этот подход позволяет приложениям следовать принципу открытия / закрытия, поскольку они становятся открытыми для будущих изменений, оставаясь закрытыми для дополнительных изменений.
ИСТОЧНИК