Основанный на RabbitMQ управляемый сообщениями компонент в GlassFish - PullRequest
3 голосов
/ 06 марта 2012

Я создаю систему, которая использует RabbitMQ в качестве решения для обмена сообщениями для своих компонентов.Однако у меня есть некоторый устаревший Java-код EJB, который выполняет задачи с интенсивным вводом-выводом на сервере приложений GlassFish как EJB.Я не хотел бы переписывать этот код, поэтому я хотел бы найти способ общаться с ним.Я знаю, что мог бы просто использовать Java-клиент RabbitMQ, но я не уверен, как бы я справился с регулированием сообщений, я не хочу, чтобы, скажем, одновременно выполнялось более 4 задач, что сравнительно легко сделать с помощью управляемых сообщенийbean-компоненты в GlassFish.

Единственное, что я придумал, - это одноэлементный EJB, который запускает таймер в PostConstruct и при этом таймер входит в блокировку цикла приема клиента AMQP.Затем я мог бы просто скопировать сообщения AMQP, полученные в локальный JMS-провайдер GlassFish, и опрашивать их с помощью MDB, но мне это не нравится, потому что мне пришлось бы контролировать несколько провайдеров JMS GlassFish, чтобы выяснить, как идут дела, а не просто проверятьRabbitMQ.

Я пытаюсь найти какую-либо информацию о том, как соединить AMQP и JMS, кто-нибудь делал что-то подобное раньше?Любые идеи приветствуются.

Ответы [ 2 ]

1 голос
/ 13 марта 2012

Вы не можете соединить AMQP и JMS, поскольку это принципиально разные понятия. AMQP - это стандарт, который определяет, как данные выглядят в сети и как должен работать брокер, JMS - это определение API.

Тем не менее, реализация брокера AMQP может предоставить API-интерфейс JMS, и я считаю, что RabbitMQ уже имеет эту функциональность.

0 голосов
/ 16 августа 2012

Скажем так: на момент написания статьи для GlassFish не было совместимого с MDB разъема AMQP.

...