![](/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.