RabbitMQ - 在发布方避免重复消息

时间:2017-02-11 20:26:19

标签: rabbitmq amqp

我正在使用RabbitMQ向用户发送通知。用户可以随时读取他的队列。

我面临的问题是队列在夜间充满了大量通知,当用户早上返回时,他必须按顺序处理这些消息。很多这些通知甚至都是重复的。

我想在发布商方面改进这一点是有意义的。也就是说,在添加新通知之前,我们会调查队列中是否已有待处理的通知。如果是这种情况,我们只会将新通知排队,如果它确实是新通知,则避免重复。

我们甚至可以通过组合通知来进一步扩展这一点:我们可以用一个新的通知替换队列中的当前通知,而不是简单地排队新通知,这些通知包含这些通知和新通知的总和(例如在一系列内部通知中。)

AMQP / RabbitMQ可以实现吗?

2 个答案:

答案 0 :(得分:3)

不,默认情况下,您无法替换现有消息。

答案 1 :(得分:2)

rabbitmq plugin旨在解决您的问题。

您可以通过将x-message-deduplication参数设置为true来启用队列上的重复数据删除。

然后,您的发布商需要提供x-deduplication-header邮件标头,其中包含对重复数据删除有意义的值。例如,该值可以是唯一邮件ID或正文的MD5 / SHA1哈希值。