Spring Cloud Stream确定主题Kafka消息来自

时间:2018-02-08 08:09:35

标签: java spring spring-cloud-stream spring-kafka

我的 @StreamListener 正在侦听 spring.cloud.stream.bindings.input.destination 属性中指定的多个Kafka主题(完全类似于10个主题)。

有没有办法确定主题消息来自 @StreamListener 带注释的方法?我不想单独为所有主题配置绑定,并编写10个几乎相同的StreamListener。

1 个答案:

答案 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