gpt4 book ai didi

java - 从一个队列铲到另一个队列后如何拒绝消息?

转载 作者:行者123 更新时间:2023-11-30 06:11:42 24 4
gpt4 key购买 nike

使用 Spring 和 RabbitMQ,我设置了两个主题交换 xdlx和两个队列qdlqq绑定(bind)到xdlqdlxdlx被配置为 q 的死信交换.

q 中出现一条消息时被拒绝(取消队列),它已成功发送到 dlx然后到dlq .

现在我使用 shovel-plugin 来移动 dlq 中的死信消息返回q 。只要这次消息处理成功(ack),这就成功了。

但是如果其中一条消息被铲入 q再次被拒绝,它就被默默地丢弃了。我希望它会发送到 DLX dlx再次。是我配置错误还是我误解了 DLX 或铲子的概念?

最佳答案

我怀疑你正在尝试这种味道......

It is possible to form a cycle of message dead-lettering. For instance, this can happen when a queue dead-letters messages to the default exchange without specifiying a dead-letter routing key. Messages in such cycles (i.e. messages that reach the same queue twice) will be dropped if there was no rejections in the entire cycle.

...因为你在铲土。请参阅Dead Letter Exchanges .

相反,请使用 TTL 和死信配置来配置 DLQ,以将过期消息路由回原始队列。这样,x-death header 就会获得两个条目 - 1 表示来自原始队列的拒绝,1 表示来自 DLQ 的到期。

我猜测,通过铲子,经纪人认为存在一个循环。

关于java - 从一个队列铲到另一个队列后如何拒绝消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50095283/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com