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
}
@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);
}
2.8.3 以降、再試行可能なトピックと再試行不可能なトピックに同じファクトリを使用できます。