我正在使用RabbitMQ向用户发送通知。用户可以随时读取他的队列。
我面临的问题是队列在夜间充满了大量通知,当用户早上返回时,他必须按顺序处理这些消息。很多这些通知甚至都是重复的。
我想在发布商方面改进这一点是有意义的。也就是说,在添加新通知之前,我们会调查队列中是否已有待处理的通知。如果是这种情况,我们只会将新通知排队,如果它确实是新通知,则避免重复。
我们甚至可以通过组合通知来进一步扩展这一点:我们可以用一个新的通知替换队列中的当前通知,而不是简单地排队新通知,这些通知包含这些通知和新通知的总和(例如在一系列内部通知中。)
AMQP / RabbitMQ可以实现吗?
答案 0 :(得分:3)
不,默认情况下,您无法替换现有消息。
答案 1 :(得分:2)
此rabbitmq plugin旨在解决您的问题。
您可以通过将x-message-deduplication
参数设置为true
来启用队列上的重复数据删除。
然后,您的发布商需要提供x-deduplication-header
邮件标头,其中包含对重复数据删除有意义的值。例如,该值可以是唯一邮件ID
或正文的MD5
/ SHA1
哈希值。