跳到主要内容
版本:4.1.1

多个监听器、相同主题

Doubao 中英对照 Multiple Listeners, Same Topic(s)

从 3.0 版本开始,现在可以在相同主题上配置多个监听器。为此,你必须使用自定义主题命名,使各重试主题彼此隔离。下面用一个示例来说明:

@RetryableTopic(...
retryTopicSuffix = "-listener1", dltTopicSuffix = "-listener1-dlt",
topicSuffixingStrategy = TopicSuffixingStrategy.SUFFIX_WITH_INDEX_VALUE)
@KafkaListener(id = "listener1", groupId = "group1", topics = TWO_LISTENERS_TOPIC, ...)
void listen1(String message, @Header(KafkaHeaders.RECEIVED_TOPIC) String receivedTopic) {
...
}

@RetryableTopic(...
retryTopicSuffix = "-listener2", dltTopicSuffix = "-listener2-dlt",
topicSuffixingStrategy = TopicSuffixingStrategy.SUFFIX_WITH_INDEX_VALUE)
@KafkaListener(id = "listener2", groupId = "group2", topics = TWO_LISTENERS_TOPIC, ...)
void listen2(String message, @Header(KafkaHeaders.RECEIVED_TOPIC) String receivedTopic) {
...
}

topicSuffixingStrategy 是可选的。框架将为每个监听器配置并使用一组独立的重试主题。