ActiveMQ-检测消息重复

问题描述

我目前正在研究Active MQ中的重复数据删除策略。 Artemis支持duplicate detection,但我不确定ActiveMQ 5

如果ActiveMQ 5中的消息当前存在于队列中,是否可以阻止该消息放置在队列中?

过去已不在队列中的消息将被允许回到队列中。

我要实现的基本功能是流控制,其中不将具有相同值的多个消息放置在队列中以除去重复的处理。

基于文档,我尝试使用定义为_AMQ_DUPL_ID的message属性,但是我仍然遇到重复。我怀疑ActiveMQ 5中可能不支持功能,并且不确定是哪种替代选项。我愿意接受建议。

注意:Amazon MQ提供了正在使用的Active MQ实例。

解决方法

您怀疑ActiveMQ 5.x不支持自动重复检测。仅ActiveMQ Artemis支持此功能。也就是说,从队列中消费消息后,不会从代理的重复ID缓存中删除消息。这是因为在大多数情况下,使用完邮件后发送的重复副本仍被视为重复副本。

也许可以在代理插件中实施某种重复检测,但是我不知道Amazon MQ支持添加自定义插件。您更有可能必须在客户端本身中实现重复检测。