SpringCloud RabbitMQ Binder錯誤通道

2023-11-29 16:14 更新

從版本1.3開始,綁定程序無條件地將異常發(fā)送到每個使用者目標的錯誤通道,并且還可以配置為將異步生產者發(fā)送失敗消息發(fā)送到錯誤通道。

RabbitMQ有兩種類型的發(fā)送失敗:

后者很少見。根據RabbitMQ文檔,“只有在負責隊列的Erlang進程中發(fā)生內部錯誤時,才會傳遞[nack]。”

除了啟用生產者錯誤通道之外,RabbitMQ綁定程序僅在正確配置連接工廠的情況下,才將消息發(fā)送到通道,如下所示:

  • ccf.setPublisherConfirms(true);
  • ccf.setPublisherReturns(true);

將Spring Boot配置用于連接工廠時,請設置以下屬性:

  • spring.rabbitmq.publisher-confirms
  • spring.rabbitmq.publisher-returns

用于返回消息的ErrorMessage的有效負載是具有以下屬性的ReturnedAmqpMessageException

  • failedMessage:發(fā)送失敗的Spring消息Message<?>。
  • amqpMessage:原始spring-amqp Message。
  • replyCode:指示失敗原因的整數值(例如312-無路由)。
  • replyText:指示失敗原因的文本值(例如,NO_ROUTE)。
  • exchange:發(fā)布消息的交易所。
  • routingKey:發(fā)布消息時使用的路由密鑰。

對于否定確認的確認,有效負載為NackedAmqpMessageException,具有以下屬性:

  • failedMessage:發(fā)送失敗Spring消息Message<?>。
  • nackReason:原因(如果有,您可能需要檢查代理日志以獲取更多信息)。

沒有對這些異常的自動處理(例如發(fā)送到死信隊列)。您可以使用自己的Spring Integration流使用這些異常。


以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號