java - Spring Cloud Stream 确定主题 Kafka 消息来自何处

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

我的@StreamListener监听spring.cloud.stream.bindings.input.destination属性中指定的多个Kafka主题(总共10个主题)。

有什么方法可以确定主题消息来自 @StreamListener 注解方法内部吗?我不想单独为所有主题配置绑定(bind)并编写 10 个几乎相同的 StreamListener。

最佳答案

参见KafkaHeaders. RECEIVED_TOPIC您可以在 @StreamListener 上指定单独的参数方法。 Spring Kafka 文档中是这样的:

@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

关于java - Spring Cloud Stream 确定主题 Kafka 消息来自何处,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48680540/

相关文章:

带有键,值类型消息的spring cloud stream SOURCE

java - Kafka Streams 生产者上的自定义 header

spring-cloud-stream - Spring云数据流: complex parallel processors scenario?

java - 为什么不能在 while 循环中将 array[n] 与 null 进行比较?

java - Java 中是否保证从左到右的操作顺序?

java - 根据配置文件在 Spring 中加载属性文件

java - NoSuchDefinitionException : No matching bean of type

java - 将字符串保存到文件

java - 一对多关系中的子项不会在 JPA 中删除

java - Hibernate通过@Query获取数据时不读取@Column