SpringCloud RabbitMQ Binder错误通道
2023-11-29 16:14 更新
从版本1.3开始,绑定程序无条件地将异常发送到每个使用者目标的错误通道,并且还可以配置为将异步生产者发送失败消息发送到错误通道。
RabbitMQ有两种类型的发送失败:
- 返回的消息,
- 负面认可的出版商确认。
后者很少见。根据RabbitMQ文档,“只有在负责队列的Erlang进程中发生内部错误时,才会传递[nack]。”
除了启用生产者错误通道之外,RabbitMQ绑定程序仅在正确配置连接工厂的情况下,才将消息发送到通道,如下所示:
ccf.setPublisherConfirms(true);
ccf.setPublisherReturns(true);
将Spring Boot配置用于连接工厂时,请设置以下属性:
spring.rabbitmq.publisher-confirms
spring.rabbitmq.publisher-returns
用于返回消息的ErrorMessage
的有效负载是具有以下属性的ReturnedAmqpMessageException
:
failedMessage
:发送失败的Spring消息Message<?>
。amqpMessage
:原始spring-amqpMessage
。replyCode
:指示失败原因的整数值(例如312-无路由)。replyText
:指示失败原因的文本值(例如,NO_ROUTE
)。exchange
:发布消息的交易所。routingKey
:发布消息时使用的路由密钥。
对于否定确认的确认,有效负载为NackedAmqpMessageException
,具有以下属性:
failedMessage
:发送失败Spring消息Message<?>
。nackReason
:原因(如果有,您可能需要检查代理日志以获取更多信息)。
没有对这些异常的自动处理(例如发送到死信队列)。您可以使用自己的Spring Integration流使用这些异常。
以上内容是否对您有帮助:
更多建议: