当前位置: 首页 > 知识库问答 >
问题:

ActiveMQ Artemis中的消息重复在消息被使用后仍然被拒绝

归翔
2023-03-14

我使用的是ActiveMQ Artemis 2.10,在我的用例中,我希望避免队列中有重复的消息,所以在向队列发送消息之前,我设置了属性message.hdr_duplicate_detection_id:

ClientConsumer consumer = session.createConsumer(queueName);
ClientMessage message = consumer.receive();
message.putStringProperty(Message.HDR_DUPLICATE_DETECTION_ID, hashVal);

但问题是,即使在此消息被消耗之后,如果我试图发送另一个具有相同hashVal值的消息,新消息也会被拒绝。即使队列中没有其他具有相同hashVal值的消息。

是否有一种方法可以将重复检测设置为仅当队列中存在具有相同HDR_DUPLICATE_DETECTION_ID的未使用消息时才拒绝消息?

共有1个答案

卢晟
2023-03-14

你看到的行为是意料之中的。对于每个邮件,重复检测ID应该是唯一的。如果您对多个消息使用相同的ID,那么它可能会被拒绝,如果它还没有被驱逐,代理上的重复ID缓存就会被拒绝。根据缓存的大小从缓存中驱逐ID。一旦缓存达到其配置的大小,它将在添加新ID时开始删除最旧的ID。

 类似资料:
  • 之前的步骤,演示了默认的BasicWxHandler的行为是怎样的,现在,我们要自定义一个WxHandler了 新建一个类,继承BasicWxHandler @IocBean(create="init", name="wxHandler") public class DefaultWxHandler extends BasicWxHandler { @Inject protected Prop

  • 我正在使用终端,我在根,GitHub存储库存在,我不知道现在该做什么。

  • 面试题 如何保证消息不被重复消费?或者说,如何保证消息消费的幂等性? 面试官心理分析 其实这是很常见的一个问题,这俩问题基本可以连起来问。既然是消费消息,那肯定要考虑会不会重复消费?能不能避免重复消费?或者重复消费了也别造成系统异常可以吗?这个是 MQ 领域的基本问题,其实本质上还是问你使用消息队列如何保证幂等性,这个是你架构里要考虑的一个问题。 面试题剖析 回答这个问题,首先你别听到重复消息这个

  • 在我们的项目中,我们使用Firebase云消息传递来进行推送通知,我们遇到了消息重复的问题。我们过程如下所示: xamarin.firebase.ios.CloudMessaging 3.1.2 xamarin.firebase.ios.instanceID 3.2.1 xamarin.firebase.ios.core 5.1.3 订阅用户主题推荐 发送主题订阅者请求的通知 null 但是,当用

  • 我将python kafka consumer的< code>auto_commit设置为< code>False,我正在手动提交消息。然而,重启后,消费者再次消费来自每个分区的最后一条消息。只有最后一个,不能再多。 这就是所展示的: 不知道为什么会显示滞后,whu当前偏移设置为最后一条消息而不是下一条?当我提交偏移量3时,当前偏移量不应该移动到4吗? 我提交我使用的每条消息,但是在重启时,它总是