如何为监听同一主题的两个Spring Kafka监听器配置独立重试与死信主题
Spring Kafka 多监听器独立配置重试/死信主题问题
我在Spring Kafka中配置了两个监听同一主题payment-topic的Kafka监听器,希望它们各自拥有独立的重试主题和死信主题——这样当其中一个监听器处理消息失败时,消息不会被重发给另一个监听器。但目前的配置下,两个监听器共用了相同的重试和死信主题:
- payment-topic
- payment-topic-retry
- payment-topic-dlt
当前代码配置如下:
class PaymentListener { @KafkaListener(topics = ["payment-topic"]) fun sendBill(payment: Payment) { // ...业务逻辑 } @KafkaListener(topics = ["payment-topic"]) fun adjustBalance(payment: Payment) { // ...业务逻辑 } } @Bean fun paymentTopicRetryStrategy( template: KafkaTemplate<String, ClearingFinishedEvent>, ): RetryTopicConfiguration { return RetryTopicConfigurationBuilder .newInstance() .useSingleTopicForSameIntervals() .fixedBackOff(3000) .maxAttempts(3) .includeTopic("payment-topic") .dltProcessingFailureStrategy(DltStrategy.ALWAYS_RETRY_ON_ERROR) .autoCreateTopics(true, 1, BROKER_DEFAULT) .create(template) }
我的实际需求是:
- 共同监听的主题:payment-topic
sendBill监听器使用专属的重试和死信主题
- send-bill-payment-topic-retry
- send-bill-payment-topic-dlt
adjustBalance监听器使用专属的重试和死信主题
- adjust-balance-payment-topic-retry
- adjust-balance-payment-topic-dlt
我原本尝试过自定义命名策略,但无法获取到监听器的详细信息,没法实现针对性的配置。请问有什么可行的解决思路吗?
内容的提问来源于stack exchange,提问作者Nos
相关产品推荐
相关产品推荐

