避免在JMS / ActiveMQ上重复消息
问题内容:
有没有一种方法可以抑制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是否有类似的解决方案?
问题答案:
您应该看看Apache
Camel,它提供了一个与任何JMS提供程序一起使用的幂等消费者组件,请参阅:http : //camel.apache.org/idempotent-
consumer.html
结合使用ActiveMQ组件可以使使用JMS非常简单,请参见:http :
//camel.apache.org/activemq.html