jms - ActiveMQ "Classic"- 检测消息重复

标签 jms activemq activemq-artemis

我目前正在 ActiveMQ“Classic”中探索重复数据删除策略。 ActiveMQ Artemis 支持 duplicate detection ,但我不确定 ActiveMQ“经典”。

如果消息当前存在于 ActiveMQ“经典”队列中,是否可以阻止将消息放入队列中?

不再在队列中且过去在队列中的消息将被允许返回队列。

我试图实现的底层功能是流量控制,其中相同值的多个消息不会放置在队列上,以消除重复处理。

根据文档,我尝试使用定义的消息属性_AMQ_DUPL_ID,但仍然遇到重复问题。我怀疑 ActiveMQ“Classic”可能不支持此功能,并且不确定什么替代选项。我愿意接受建议。

注意:正在使用的 ActiveMQ 实例由 Amazon MQ 提供。 .

最佳答案

正如您所怀疑的,ActiveMQ“Classic”不支持自动重复检测。仅 ActiveMQ Artemis 支持此功能。也就是说,当从队列中使用消息时,消息不会从代理的重复 ID 缓存中删除。这是因为在大多数情况下,消息被消费后发送的重复项仍被视为重复项。

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

关于jms - ActiveMQ "Classic"- 检测消息重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63895036/

相关文章:

node.js - 用于 ActiveMQ 调用的 npm 模块

activemq - 如何转义 mqtt 主题中的特殊字符(正斜杠)?

c# - ActiveMQ 网管系统 SSL : run application from remote machine

java - 如何干净地关闭嵌入式 ActiveMQ Artemis

java - HornetQ 与 Artemis ActiveMQ 转移

java - 如何设计包含大量数据的JMS消息

java - WebSphere MQ 的 QueueConnectionFactory

jms - ActiveMQ 消息选择器

java - Spring jms - 重命名 DLQ

java - 如何在 WildFly 10 中动态更改 JMS 队列 MDB 池大小