Без использования JMS Wrapper, как эмулировать тему JMS с HornetQ core API - PullRequest
3 голосов
/ 02 января 2011

Я бы хотел перевести концепцию тем JMS с помощью основного API HornetQ.

Проблема, которую я вижу из моего краткого исследования, может показаться, что основной класс JMSServerManagerImpl (из hornetq-jms.jar) использует jndi для координации различных коллабораторов, которые ему требуются. Я хотел бы избежать jndi, так как он не самодостаточен и является глобально разделяемым объектом, что является проблемой, особенно в среде osgi. Одной из альтернатив является копирование, начиная с JMSServerManagerImpl, но это кажется большой работой.

Я бы предпочел подтвердить, что мой подход к эмуляции того, как темы поддерживаются в hornetq, является правильным способом решения этой проблемы. Если кто-то обладает достаточными знаниями, возможно, они могут прокомментировать, как мне кажется, подход к написанию моей собственной эмуляции тем с использованием базового API.

УСЛОВИЕ

  • в случае сбоя получателя сообщения (с помощью отката) контейнер попытается доставить сообщение другому получателю по той же теме.

Эмуляция

  1. переносить каждое сообщение, добавленное к теме.
  2. отправитель отправляет сообщение с набором обработчиков подтверждения.
  3. оболочка для (1) будет откатываться после возвращения реального слушателя.
  4. отправитель затем подтверждает доставку

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

Ответы [ 2 ]

3 голосов
/ 01 декабря 2011

Если вы пытаетесь выяснить, как отправить сообщение нескольким потребителям с помощью основного API;вот что я рекомендую

  1. Создание очереди 1 и привязка к адресу 1
  2. Создание очереди 2 и привязка к адресу 1
  3. Создание очереди N и привязка к адресу1

  4. Отправить сообщение по адресу 1

  5. Запустить N потребителей, где каждый потребитель прослушивает очередь 1-N

Таким образомэто в основном работает как тема.

0 голосов
/ 04 января 2011

http://hornetq.sourceforge.net/docs/hornetq-2.0.0.BETA5/user-manual/en/html/using-jms.html

7,5.Непосредственное создание экземпляров JMS Resources без использования JNDI

...