配置JMS(ActiveMQ)队列,使其仅包含最后一条消息

时间:2011-01-12 17:58:35

标签: jms activemq

我们有石英进程来轮询ActiveMQ JMS队列。

我们知道我们每分钟可以获得几条消息,只想以一分钟或更长时间的配置轮询速率响应最新消息。

我们不需要处理任何先前的消息。

有没有办法配置队列来获取此行为?

似乎主题有能力通过订阅恢复策略使用计数1来执行此操作。我们希望使用队列来保证(或多或少)单个传递消息。

或者我们的假设存在概念上的缺陷......

由于

2 个答案:

答案 0 :(得分:0)

在我看来,没有标准的操作,所以你必须写一些代码......

一种可能的解决方案是将 QueueBrowser QueueReceiver 一起使用:

通过 QueueReceiver ,您将获得队列中消息的枚举。对于每条消息,只要 hasMoreElements()返回true,您就可以在JMSMessageID上使用MessageSelector执行接收。最后一条消息将是您想拥有的消息....

答案 1 :(得分:0)

使用activemq时,可以在主题上使用“图像缓存”。其中一个设置是始终保持最后的消息发送..

查看订阅恢复策略设置:

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