繁体   English   中英

使用 Spring Cloud Stream Kafka Binder 批量消费 Kafka 消息及其密钥

[英]Consuming Kafka messages with its key in batches using Spring Cloud Stream Kafka Binder

批量消费时是否有可能获得kafka消息的密钥?

当使用Message<String>作为我的消费者 function 的输入时,我设法访问了消息键,但这仅适用于非批处理模式:

@SpringBootApplication
class KafkaSink {

    private val log = logger()

    @Bean
    fun sink() : Consumer<Message<String>> {
        return Consumer {
            log.info("key: ${it.headers[KafkaHeaders.RECEIVED_MESSAGE_KEY]} value: ${it.payload}")      
        }
    }
}

设置属性spring.cloud.stream.binding.sink.consumer.batch-mode=true时,我只能使用List<String>作为消费者的参数,但不能使用List<Message<String>>

使用Message<List<String>> 然后, KafkaHeaders.RECEIVED_MESSAGE_KEY是一个List<?> ,其顺序与有效负载相同 - 所有其他标头都相同。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM