Настройте очередь JMS (ActiveMQ), чтобы она содержала только последнее сообщение - PullRequest
3 голосов
/ 12 января 2011

У нас есть кварцевый процесс, который опрашивает очередь ActiveMQ JMS.

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

Нам не нужно обрабатывать ни одно из предыдущих сообщений.

Есть ли способ настроить очередь для получения такого поведения?

Похоже, что тема имеет возможность сделать это с помощью политики восстановления подписки с использованием счетчика 1. Мы хотели бы сделать это, используя очередь, чтобы гарантировать (более или менее) разовую доставку сообщения..

Или в наших предположениях есть концептуальный недостаток ...

Спасибо

Ответы [ 2 ]

0 голосов
/ 22 марта 2011

При использовании activemq вы можете использовать «кэширование изображений» по темам.Один из параметров - всегда сохранять последнее отправленное сообщение.

Просмотрите параметры политики восстановления подписки:

http://activemq.apache.org/subscription-recovery-policy.html

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

По-моему, для этого нет стандартной операции, поэтому вам придется написать некоторый код ....

Одним из возможных решений было бы использование QueueBrowser вместе с QueueReceiver :

Через QueueReceiver вы получите Перечисление сообщений в очереди. Теперь для каждого сообщения вы можете выполнить получение с помощью MessageSelector для JMSMessageID, если hasMoreElements () возвращает значение true. Последнее сообщение будет тем, которое вы хотите получить ...

...