rabbitmq - Spring AMQP-我如何从 DLX 队列重试/重新排队消息到原始队列?
问题描述
我正在尝试在我的应用程序中实现以下场景
交换 e1 -> 队列 q1
DLX 交换 e2 -> 队列 q2
我还提到了队列 q1 中的 DLE 和 DLK,然后消息在拒绝/失败/超时时移动到队列 q2。
但是我如何将消息从 queue-q2 重新发送/重试到原始 queue-q1?
解决方案
在一些分析和过滤逻辑之后,您可以在应用程序中手动执行此操作。或者你可以做一些TTL
让queue-q2
未消费的消息过期。您还需要在此队列中指定 ax-dead-letter-exchange
作为Exachange e1
所需回收的名称。
在这篇文章中查看更多信息:
- 创建死信交换,这只是一个带有特殊名称的普通交换
- 创建一个 retry_message 队列并将所有消息发布到此处的死信交换路由
- 设置 retry_message 队列时,请务必默认队列的以下参数值
- x-message-ttl: 30000 – 这将为发布到队列的任何消息设置一个 ttl。当 ttl 过期时,消息将被重新发布到
x-dead-letter-exchange
参数中指定的交换器。 - x-dead-letter-exchange: original_exchange_name – 这是消息 ttl 过期后消息将重新发布到的位置。我们通常希望这是最初发布消息的交易所的名称。
推荐阅读
- javascript - Angular:在伪类中动态更改 SCSS 属性
- javascript - “OperatorFunction”类型上不存在属性“订阅”
' - terraform - 为 aws_api_gateway_gateway_response 中的字段 status_code 设置默认值
- unity3d - 如何更改为游戏自动记录的“我的公司”的名称
- sapui5 - 如何在表单中添加消息
- javascript - 重用 React 'key'
- android - 个人资料头像中的表情符号
- ios - Xcode 11.1 升级奇怪 - 主屏幕显示为模态视图
- android - 当我输入“webview”这个词时,andrioad 工作室告诉“期待成员声明”
- python - 从字典中返回值