当前位置: 首页 > 面试题库 >

避免在JMS / ActiveMQ上重复消息

西门梓
2023-03-14
问题内容

有没有一种方法可以抑制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



 类似资料:
  • 我正在使用Spring Boot中的。Java 8 我的主要目的是,消费者不应重复使用信息。 1)调用表获取100行并将其发送到kafka 2) 假设我处理了70行(我得到了成功确认),然后Kafka宕机了(Kafka在RETRY机制计时内无法恢复) 因此,当我重新启动Spring启动应用程序时,我如何确保不再发送这70条消息。 一种选择是我可以在数据库表消息 中使用标志。 还有其他有效的方法吗?

  • 我正在以以下方式向队列发送消息: 我想安排重复我的信息。我的意思是,无论控制器(如下所示)中的this line正在发送什么消息,我都想继续发送,比如说10次或100次(取决于我设置的计时器)。我的消费者(以下未显示)将继续消费相同的消息,直到我要求它停止。例如,即使我的生产者将发送消息10或100次,如果我想在第5次(生产者发送消息10次)或第50次(生产者发送消息100次)停止接收消息,我应该

  • 本文向大家介绍避免在MongoDB中重复输入?,包括了避免在MongoDB中重复输入?的使用技巧和注意事项,需要的朋友参考一下 为了避免在MongoDB中重复输入,可以使用。语法如下- 让我们实现以上语法。避免在MongoDB中重复条目的查询如下- 现在在上面的集合中插入一些记录。插入记录的查询如下- 每当您尝试再次插入相同记录时,都会出现此错误- 让我们插入另一条记录。查询如下- 在method

  • 你好,我有一个简单的mysql查询,我需要显示唯一的文件名,现在查询显示重复的文件名,我想避免这种情况

  • 问题内容: 我是mongodb的新手。我可以知道如何避免重复输入。在关系表中,我们使用主键来避免它。我可以知道如何使用Java在Mongodb中指定它吗? 问题答案: 在选项中使用索引。 您也可以跨多个字段执行此操作。 有关 更多详细信息和示例, 请参阅 文档中的 此部分 。 MongoDB索引可以有选择地施加一个 唯一的键约束 ,以确保不会插入任何索引键值与现有文档值匹配的文档。 如果希望从唯一

  • 问题内容: 我已经学习apache kafka一个月了。但是,我现在陷入了困境。我的用例是,我有两个或多个在不同计算机上运行的使用者进程。我进行了一些测试,在其中我在kafka服务器中发布了10,000条消息。然后,在处理这些消息时,我杀死了一个使用者进程并重新启动了它。消费者正在将处理后的消息写入文件中。因此,使用结束后,文件显示了超过1万条消息。因此,某些消息是重复的。 在使用者过程中,我已禁