消息队列消息去重

问题描述 投票:0回答:1

rabbiqMQ 是否可以在“消息数据”级别取消发布消息?

例如,如果我正在处理通过调用 API 发送到我的系统的发票,但该 API 分布在处理请求的多个 Web 服务器上,然后这些 Web 服务器将发票和发票 ID 放入队列中由工人处理。

假设每张发票都有一个唯一的发票 ID,并且只应处理一次,但有时同一张发票会多次发送到 API(并且每次可能会到达不同服务器上的相同 API 端点)。

是否可以设置rabbit MQ删除发票ID与已处理消息相同的任何消息?

所以我说的重复项不是“重复消息”,而是与“重复事物”相关的消息

我尝试在谷歌上搜索有关此问题的答案,但找不到任何非常明确的内容。

rabbitmq queue
1个回答
0
投票

不,服务器不知道内容数据。 最佳实践是实施幂等系统。

有一些社区插件,例如https://github.com/noxdafox/rabbitmq-message-deduplication#queue-level-deduplication(我从未尝试过)

或者您可以使用流https://www.rabbitmq.com/blog/2021/07/28/rabbitmq-streams-message-deduplication

© www.soinside.com 2019 - 2024. All rights reserved.