我的 @StreamListener 正在侦听 spring.cloud.stream.bindings.input.destination 属性中指定的多个Kafka主题(完全类似于10个主题)。
有没有办法确定主题消息来自 @StreamListener 带注释的方法?我不想单独为所有主题配置绑定,并编写10个几乎相同的StreamListener。
答案 0 :(得分:2)
请参阅KafkaHeaders. RECEIVED_TOPIC
,您可以在@StreamListener
方法上指定单独的参数。在Spring Kafka docs中有类似的东西:
@KafkaListener(id = "qux", topicPattern = "myTopic1")
public void listen(@Payload String foo,
@Header(KafkaHeaders.RECEIVED_MESSAGE_KEY) Integer key,
@Header(KafkaHeaders.RECEIVED_PARTITION_ID) int partition,
@Header(KafkaHeaders.RECEIVED_TOPIC) String topic,
@Header(KafkaHeaders.RECEIVED_TIMESTAMP) long ts
) {
...
}
https://docs.spring.io/spring-kafka/reference/htmlsingle/#kafka-listener-annotation