有一种方法可以抑制在ActiveMQ服务器上定义的队列上的重复消息?在JMS/ActiveMQ上避免重复的消息
我尝试手动定义JMSMessageID(message.setJMSMessageID(“uniqueid”)),但服务器忽略此修改并传递带有内置生成的JMSMessageID的消息。
根据规范,我没有找到关于如何删除重复消息的参考。
在HornetQ中,为了处理这个问题,我们需要在消息定义上声明HQ特有的属性org.hornetq.core.message.impl.HDR_DUPLICATE_DETECTION_ID。
即:
Message jmsMessage = session.createMessage();
String myUniqueID = "This is my unique id"; // Could use a UUID for this
message.setStringProperty(HDR_DUPLICATE_DETECTION_ID.toString(), myUniqueID);
有人知道是否有对应的ActiveMQ类似的解决方案?
我怀疑这种方法是否能解决我的问题。我只需要在队列中使用相同的JMSMessageID保留一个消息实例。我需要它作为一个集合工作。我希望能够将最新的idem元素从队列中移除后,使用相同的JMSMessageID放置其他消息。我需要实施它并进行测试。但是,基于在EAI书中描述的Idempotent,我认为这个概念与我的必要性不符。 BUt,建议的解决方案很好。我会更多地研究它并在这里评论我的结果。谢谢 – apast 2011-02-11 01:31:58