2016-02-12 6 views
0

У меня есть ситуация, когда мне нужно прочитать (по ходу) сообщения из темы и поместить их в другую очередь. Я сомневаюсь, что мне нужна jms Queue, или я могу быть доволен очередью java в памяти. Я буду делать чтение из очереди другими потоками в том же jvm и будет делать клиенту подтверждение сообщения в теме после прочтения сообщения из очереди (в памяти) и обрабатывать его по мере необходимости (отправить его на удаленную IBM MQ). Так что, если мой клиент выйдет из строя, сообщения, которые существовали в очереди в памяти, будут потеряны, но будут по-прежнему существовать по теме и будут для меня повторно назначены. Я прав ?jms Queue vs in memory java Queue

ответ

1

Отчасти это зависит от того, как вы настроили очередь/тему и строку подключения, которую используете, чтобы читать из MQ от IBM, но если вы используете значения по умолчанию, вы будете терять сообщения, если вы читаете их в - очередь памяти.

Я бы использовал ActiveMQ, либо в том же JVM, что и в библиотеке, поэтому у вас есть уход за получением, доставкой и сохранением.

Кроме того, если вы слушаете тему вы не собираетесь быть отправлены пропущенными сообщения после аварии, даже если вы повторно после этого, если вы не имеете

  1. настроит клиент в качестве долгосрочного абонента
  2. (до истечения срока действияMessagesPeriod)

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

0

Основное отличие заключается в том, что в памяти теряется информация, когда приложение опускается; Очередь JMS теряет данные, когда сервер идет вниз, если тема/очередь не является постоянной. Первый намного более вероятен, чем последний, поэтому я также сказал бы пойти с JMS.