SpringCloud 重試RabbitMQ Binder

2023-11-29 16:02 更新

當在活頁夾中啟用重試后,偵聽器容器線程將在配置的任何退避期間暫停。當需要單個消費者嚴格訂購時,這可能很重要。但是,對于其他用例,它阻止在該線程上處理其他消息。使用活頁夾重試的另一種方法是設(shè)置帶有時間的無效字母,以保留在無效字母隊列(DLQ)中,并在DLQ本身上進行無效字母配置。有關(guān)此處討論的屬性的更多信息,請參見“ RabbitMQ Binder Properties” 。您可以使用以下示例配置來啟用此功能:

  • autoBindDlq設(shè)置為true活頁夾創(chuàng)建一個DLQ。(可選)您可以在deadLetterQueueName中指定一個名稱。
  • dlqTtl設(shè)置為您要在兩次重新交付之間等待的退避時間。
  • dlqDeadLetterExchange設(shè)置為默認交換。來自DLQ的過期消息被路由到原始隊列,因為默認的deadLetterRoutingKey是隊列名稱(destination.group)。設(shè)置為默認交換是通過將屬性設(shè)置為無值來實現(xiàn)的,如下例所示。

要強制對消息進行死信處理,請拋出AmqpRejectAndDontRequeueException或?qū)?code class="literal" i="2638">requeueRejected設(shè)置為true(默認值)并拋出任何異常。

循環(huán)無休止地繼續(xù)進行,這對于瞬態(tài)問題很好,但是您可能需要在嘗試幾次后放棄。幸運的是,RabbitMQ提供了x-death標頭,可讓您確定發(fā)生了多少個循環(huán)。

要在放棄后確認消息,請拋出ImmediateAcknowledgeAmqpException


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

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號