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

配置JMS(ActiveMQ)队列,使其仅包含最后一条消息,jms,activemq,Jms,Activemq,我们有一个轮询ActiveMQ JMS队列的quartz进程 我们知道一分钟可以收到几条消息,但我们只希望以一分钟或更长的配置轮询速率响应最新消息 我们不需要处理以前的任何消息 是否有方法配置队列以获得此行为 似乎某个主题可以通过订阅恢复策略使用计数1来实现这一点。我们希望使用队列来保证(或多或少)消息的一次传递 或者我们的假设中有概念上的缺陷 谢谢在我看来,这没有标准操作,所以您必须编写一些代码 一种可能的解决方案是将QueueBrowser与QueueReceiver一起使用: 通过Queu

我们有一个轮询ActiveMQ JMS队列的quartz进程

我们知道一分钟可以收到几条消息,但我们只希望以一分钟或更长的配置轮询速率响应最新消息

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

是否有方法配置队列以获得此行为

似乎某个主题可以通过订阅恢复策略使用计数1来实现这一点。我们希望使用队列来保证(或多或少)消息的一次传递

或者我们的假设中有概念上的缺陷


谢谢

在我看来,这没有标准操作,所以您必须编写一些代码

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


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

使用activemq时,可以对主题使用“映像缓存”。其中一个设置是始终保持最后一次发送的mesage

请查看订阅恢复策略设置:


这并不是JMS真正的用例。听起来您需要一个数据库……在WebSphere MQ中,这将非常简单。将保留的发布作为持久性消息发布。该主题始终包含最新的主题,并在两个位置硬化为磁盘。活动MQ是否有类似于WMQ的保留酒吧?如果没有,您的店铺中是否有可以利用的WMQ?