![](/img/trans.png)
[英]spring-kafka: How to provide RetryTopicConfiguration to ConcurrentMessageListenerContainer?
[英]spring-kafka: DeadLetterPublishingRecoverer vs RetryTopicConfiguration
DefaultErrorHandler
和RetryTopicConfiguration/Builder
有什么關系? 他們可以一起工作還是一個優先於另一個?
我正在嘗試設置我的消費量
FixedBackOff(attempts = 3, interval = 5s)
)RetryTopicConfiguration.useSingleTopicForFixedDelays
有效)main-topic-name.retry
)。 還沒有找到任何讓我這樣做的類/方法。main-topic-name.deadLetter
) 發送到死信。 DeadLetterPublishingRecoverer
第二個參數BiFunction
應該可以工作,但看起來 DL 主題必須事先創建。 不完全確定。觀察
DeadLetterPublishingRecoverer
,我可以使用硬編碼的FixedBackOff
重試( return new DefaultErrorHandler(recoverer, new FixedBackOff(5000, 3));
)DeadLetterPublishingRecoverer
與重試相關的屬性配置一起使用,則會覆蓋上述硬編碼的退避。 即使我提供了一個配置的錯誤處理程序實例,我也很困惑覆蓋是如何發生的。DeadLetterPublishingRecoverer
,我沒有獲得單獨的重試主題。RetryTopicConfiguration
(帶或不帶恢復器),我得到一個重試主題,不是我想要的名稱,而是默認名稱。 但是,使用的死信主題不是我的,是在DeadLetterPublishingRecoverer
中提供的,而是默認的( ....-dlt
)我希望人們會遇到這個問題並找到我打算設置消費方式的解決方案(上面的編號列表)。
幫助表示贊賞
您的問題似乎更多是關於主題命名而不是關於DeadLetterPubishingRecoverer
。
如果只需要更改主題的后綴,例如main-topic-name.retry
和main-topic-name.deadLetter
,可以使用RetryTopicConfigurationBuilder
中的方法,例如:
@Bean
public RetryTopicConfiguration myRetryTopic(KafkaTemplate<String, MyOtherPojo> template) {
return RetryTopicConfigurationBuilder
.newInstance()
.useSingleTopicForFixedDelays()
.retryTopicSuffix(".retry")
.dltTopicSuffix(".deadletter")
.create(template);
}
如果您需要更多自定義,您還可以提供RetryTopicNamesProviderFactory
。
有關更多詳細信息,請參閱功能的主題命名文檔 - 版本2.8.x和2.9.x。
關於與DefaultErrorHandler
和DeadLetterPubishingRecoverer
的交互,該功能的工作方式是框架將設置自己的DEH
和DLPR
來處理記錄轉發到重試主題和 dlt。
如有必要,您可以自定義這些組件 - 對於2.9.x
,請參閱文檔的此部分以了解如何配置它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.