Возможно, вы рассмотрите возможность использования ActiveMQ Artemis вместо ActiveMQ 5.x, поскольку модель адресации Artemis намного больше похожа на модель RabbitMQ, чем на модель адреса 5.x (что является более JMS-моделью). -centri c).
Что касается JMS, я думаю, что вам нужно:
- topi c. Это аналог "обмена" от RabbitMQ. Любое сообщение, отправленное в JMS topi c, доставляется каждому подписчику. Это базовая c семантика публикации / подписки.
- Подписчик topi c с селектором. Как отмечено в # 1, каждый подписчик на topi c получит любое сообщение, отправленное на эту topi c, но «селектор» JMS можно использовать для фильтрации сообщений, аналогичных ключу маршрутизации в RabbitMQ.
- Согласованный ключ для свойства сообщения. Чтобы создать жизнеспособный селектор для подписчика topi c, производитель и подписчик должны согласовать ключ свойства для фильтрации.
Если в каждой подписке будет много сообщений и сообщения должны быть разделены между несколькими подписчиками / потребителями (например, для распределения нагрузки / распределения), тогда вам нужно будет использовать «общую подписку» JMS. Однако общие подписки являются только частью JMS 2, и только ActiveMQ Artemis реализует JMS 2. Вы не можете использовать ActiveMQ 5.x с общими подписками JMS, поскольку он поддерживает только JMS 1.1.
ActiveMQ 5.x и ActiveMQ Artemis по умолчанию создает ресурсы на стороне сервера (например, темы, очереди и т. Д. c.) По требованию, поэтому все, что вам нужно сделать, это написать приложение JMS.