如何从Spring云流中读取Kafka消息密钥?

时间:2019-02-12 23:45:26

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

enter code here我正在使用春季云流来吸收来自Kafka的消息。

是否可以从代码中读取Kafka消息密钥?

我有一个Kafka主题,通常有两种消息类型。根据消息键的不同,要采取的措施也有所不同。我看到spring文档只有以下内容才能读取该消息。在这里,我需要指定消息的实际映射(此处为greetings类)。但是,我需要一种可以读取消息密钥并确定可反序列化的Pojo的方法

公共类GreetingsListener {

@StreamListener(GreetingsProcessor.INPUT)
public void handleGreetings(@Payload Greetings request) {

}

}

1 个答案:

答案 0 :(得分:0)

您可以尝试以下操作:

@StreamListener(GreetingsProcessor.INPUT)
public void handleGreetings(@Payload Greetings request, @Header(KafkaHeaders.RECEIVED_MESSAGE_KEY)String  key) {

}

您需要为密钥提供适当的反序列化器。例如如果您的密钥是字符串,那么您可以提供:

spring.cloud.stream.kafka.binder.configuration.key.deserializer=org.apache.kafka.common.serialization.StringDeserializer