跳到主要内容

指定 ListenerContainerFactory

ChatGPT-4o-mini 中英对照 Specifying a ListenerContainerFactory

默认情况下,RetryTopic 配置将使用 @KafkaListener 注解中提供的工厂,但您可以指定一个不同的工厂来创建重试主题和 DLT 监听器容器。

对于 @RetryableTopic 注解,您可以提供工厂的 bean 名称,并且使用 RetryTopicConfiguration bean,您可以提供 bean 名称或实例本身。

@RetryableTopic(listenerContainerFactory = "my-retry-topic-factory")
@KafkaListener(topics = "my-annotated-topic")
public void processMessage(MyPojo message) {
// ... message processing
}
java
@Bean
public RetryTopicConfiguration myRetryTopic(KafkaTemplate<Integer, MyPojo> template,
ConcurrentKafkaListenerContainerFactory<Integer, MyPojo> factory) {
return RetryTopicConfigurationBuilder
.newInstance()
.listenerFactory(factory)
.create(template);
}

@Bean
public RetryTopicConfiguration myOtherRetryTopic(KafkaTemplate<Integer, MyPojo> template) {
return RetryTopicConfigurationBuilder
.newInstance()
.listenerFactory("my-retry-topic-factory")
.create(template);
}
java
important

自 2.8.3 版本以来,您可以对可重试和不可重试的主题使用相同的工厂。