форсировать порядок сообщений с HornetQ - PullRequest
8 голосов
/ 03 ноября 2010

Я настроил JMS-сервер с HornetQ в качестве JMS-провайдера (очередь).

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

Я понимаю, что спецификация JMS не гарантирует порядок доставки, но я ищу способ сделать это: получать сообщения точно в том порядке, в котором они были отправлены, даже еслиэто зависит от поставщика.

Есть идеи?

Ответы [ 2 ]

2 голосов
/ 03 ноября 2010

Видимо, этого можно добиться, отключив кэш-память потребителя. Это делается путем изменения hornetq-jms.xml:

   <connection-factory name="ConnectionFactory">
      <connectors>
         <connector-ref connector-name="netty-connector"/>
      </connectors>
      <entries>
         <entry name="ConnectionFactory"/>
      </entries>

      <consumer-window-size>0</consumer-window-size> <!-- add this line -->
   </connection-factory>
1 голос
/ 06 июня 2011

На самом деле в разделе 4.4.10.2 («Порядок отправки сообщений») спецификации JMS довольно ясно сказано о порядке.

Если у вас есть один производитель и один потребитель для подписки на очередь или тему, порядок сообщений всегда гарантируется даже при наличии доставок.

Если у вас несколько потребителей, буферизация клиента может быть восстановлена ​​в случае отката или закрытия вашего потребителя, а буфер клиента может быть доставлен из заказа.

В HornetQ у вас также есть группа сообщений, которая дает дополнительные ограничения порядка для создаваемых сообщений.

...