Apache ActiveMQ

Версия 10.6 от Alexandr Fokin на 2021/12/26 16:36

Компоненты:

  • Producer - производитель сообщений.
  • Consumer - потребитель сообщений.
  • Queues - Очередь сообщений.
    В очередь могут писать несколько производителей.
    Очередь могут читать несколько потребителей одновременно, при сообщения будут распределяться между ними (а не дублироваться).
    После подтверждения прочтения сообщение удаляется из очереди.
  • Topics - Топик выполняет функцию широковещательного канала.
    Топик не хранит сообщения, а распространяет отправленное в него сообщение на всех подключенных к нему потребителей.

В рамках брокера используются следующие термины:

  • Durability - свойство обозначающее, что сообщение сохраниться даже если нет ни одного подключенного потребителя.
    Можно сказать, что Queue обладает свойством Durability, а Topic нет.
  • Persistence - свойство обозначающее, что сообщение не будет потеряно в случае перезагрузки брокера (отчистки оперативной памяти).
    Подразумевает, что все сообщения будут сохранены в определенное хранилище - Message store.
  • Message store - хранилище сообщение. 
    В качестве хранилища может выступать как файловая система, так и сторонние реализации провайдеров хранилища (в том числе и базы данных).
    Допустимо использование топологии, когда к одному хранилищу могут быть подключены пара брокеров, причем один будет активным, а второй резервным и будет активирован и при выходе из строя первого.

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


Материалы:

Документация:
https://activemq.apache.org/components/nms/msdoc/1.6.0/vs2005/Output/html/N_Apache_NMS.htm

Книга
Understanding Message Brokers | O’Reilly

Selector. Выборка сообщений из очереди по условию.
https://activemq.apache.org/selectors

Message Groups. JMSXGroupID
https://activemq.apache.org/message-groups