SpringCloud RabbitMQ Binder錯(cuò)誤通道

2023-11-29 16:14 更新

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

RabbitMQ有兩種類型的發(fā)送失?。?/font>

后者很少見。根據(jù)RabbitMQ文檔,“只有在負(fù)責(zé)隊(duì)列的Erlang進(jìn)程中發(fā)生內(nèi)部錯(cuò)誤時(shí),才會(huì)傳遞[nack]。”

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

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

將Spring Boot配置用于連接工廠時(shí),請(qǐng)?jiān)O(shè)置以下屬性:

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

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

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

對(duì)于否定確認(rèn)的確認(rèn),有效負(fù)載為NackedAmqpMessageException,具有以下屬性:

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

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


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)