我将包含字符串数据的消息放入rabbitmq队列。 消息发布被称为服务的一部分,并且可以使用相同的数据(数据进入队列)多次调用服务,因此很可能在队列中存在重复数据。 我们遇到此问题,因为使用者代码将此数据插入到此数据为主键的表中。将同时从4个不同的节点调用消费者,从而可能发生消费者消费相同数据(来自不同消息)的可能性。
我想知道rabbitMQ发布是否有办法避免重复邮件。
阅读“定义属性”x-unique-message-code“比较它们是一种简单易行的方法”,但不知道该怎么做。
我正在使用spring-amqp
非常感谢任何帮助。
谢谢
答案 0 :(得分:0)
RabbitMQ有一篇关于可靠性的文章:https://www.rabbitmq.com/reliability.html
有一个注释:
如果网络出现故障(或节点崩溃),可能会复制邮件,并且消费者必须准备好处理它们。如果可能,最简单的方法是确保您的消费者以幂等方式处理消息,而不是明确地处理重复数据删除。
为此,可以使用messageId
属性提供要生成的消息。