Как создать обмен topi c в Qpid JMS для ActiveMQ, как RabbitMQ? - PullRequest
0 голосов
/ 20 февраля 2020

У меня есть Java приложение, которое использует RabbitMQ. Это приложение создает обмен TOPI C и отправляет сообщения в TOPI C со своим собственным ключом маршрутизации. Таким образом, если я хочу получить данные из любого приложения, я создаю привязку очереди с обменом TOPI C и ключом маршрутизации, который я хочу.

Я хочу сделать то же самое, используя Java приложение с Qpid JMS в качестве клиента и ActiveMQ в качестве сервера. Информация говорит, что это возможно, но я не знаю как. Я не могу найти конкретный c пример, кажется RabbitMQ. Я могу создавать очереди, но я не знаю, как создать обмен и привязку. Какие шаги я должен выполнить, чтобы достичь этого?

1 Ответ

1 голос
/ 20 февраля 2020

Возможно, вы рассмотрите возможность использования ActiveMQ Artemis вместо ActiveMQ 5.x, поскольку модель адресации Artemis намного больше похожа на модель RabbitMQ, чем на модель адреса 5.x (что является более JMS-моделью). -centri c).

Что касается JMS, я думаю, что вам нужно:

  1. topi c. Это аналог "обмена" от RabbitMQ. Любое сообщение, отправленное в JMS topi c, доставляется каждому подписчику. Это базовая c семантика публикации / подписки.
  2. Подписчик topi c с селектором. Как отмечено в # 1, каждый подписчик на topi c получит любое сообщение, отправленное на эту topi c, но «селектор» JMS можно использовать для фильтрации сообщений, аналогичных ключу маршрутизации в RabbitMQ.
  3. Согласованный ключ для свойства сообщения. Чтобы создать жизнеспособный селектор для подписчика topi c, производитель и подписчик должны согласовать ключ свойства для фильтрации.

Если в каждой подписке будет много сообщений и сообщения должны быть разделены между несколькими подписчиками / потребителями (например, для распределения нагрузки / распределения), тогда вам нужно будет использовать «общую подписку» JMS. Однако общие подписки являются только частью JMS 2, и только ActiveMQ Artemis реализует JMS 2. Вы не можете использовать ActiveMQ 5.x с общими подписками JMS, поскольку он поддерживает только JMS 1.1.

ActiveMQ 5.x и ActiveMQ Artemis по умолчанию создает ресурсы на стороне сервера (например, темы, очереди и т. Д. c.) По требованию, поэтому все, что вам нужно сделать, это написать приложение JMS.

...