rabbitmq Rabbit MQ消息重复数据删除

aor9mmx1  于 2023-02-04  发布在  RabbitMQ
关注(0)|答案(2)|浏览(306)

感谢论坛的回复和分享。我正在寻找rabbit mq端重复数据删除设置。它是在队列端还是交换端
我们是否有配置rabbit mq或队列或交换的步骤,以便除了一条消息之外丢弃重复的消息。消息包含id号(简单地说,整数或数字字符串不是任何复杂对象),但从应用程序的某个时候起,它从各种实体侦听器发送(java /jpa)在某些事件和消息重复是肯定的和不可避免的大多数情况下。我们想存储一个消息和处理一个出的重复消息。我'我正在寻找rabbit mq中的一个特性,以便它可以处理重复数据删除。
我在网上没有找到太多的细节。如果有人知道或探索过这个,你能告诉我一个链接或类型在这里如何。
先谢了。萨纳尔

**预期在Rabbit mq端配置一些步骤,以便最大限度地减少消息发布者端的逻辑/重复数据删除逻辑。

bqujaahr

bqujaahr1#

RabbitMQ不支持使用经典、仲裁和流队列的重复数据删除。
唯一的重复数据删除是使用Stream-Plugin和RabbitMQ流客户端。
例如,请参见有关此内容的java文档
另请参阅此gist关于流和流插件

3pvhb19x

3pvhb19x2#

这个答案可能有点晚了,但是这个插件可能很有用https://github.com/noxdafox/rabbitmq-message-deduplication
使用它,您可以定义消息重复数据删除交换,并使用特定的头(已检查其唯一性)发布消息。
代码片段在ruby,使用兔子宝石:

queue = channel.queue('my-queue')
exchange = channel.exchange('my-exchange',
                 type: 'x-message-deduplication',
                 durable: true,
                 arguments: { 'x-cache-size' => 50, 'x-cache-persistence' => 'disk' })
queue.bind(exchange)

exchange.publish('ping', headers: { 'x-deduplication-header' => 'i' })
exchange.publish('ping', headers: { 'x-deduplication-header' => 'i' })
exchange.publish('pong', headers: { 'x-deduplication-header' => 'o' })

执行后,队列将包含内容为pingpong的2条消息

相关问题