如何为Kafka KeyValueStore设置值解串器?

时间:2019-07-03 08:18:09

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

我将来自Kafka主题的消息存储在KeyValueStore中,以便以后查询。我创建一个KTable,如下所示:

for (i = 0; i < data.length; i++)

我在application.yml中配置了使用者,如下所示:

更新的de / serializer程序包

@StreamListener public void process(@Input("input") KTable<String,MyMessage> myMessages) {

但是,当我从KeyValueStore中读取键时,键正确地作为字符串返回,但是返回的值是字节数组而不是MyMessage。由于某种原因,未使用我的自定义解串器。我试图自己对消息进行反序列化,但是我的反序列化器崩溃,发生异常。我在序列化程序上放置了一个断点,但从未调用过。对我来说很清楚,我的序列化器或反序列化器都没有使用。

我缺少什么配置,以便使用我的自定义值de / serializer?解/序列化器是否需要放在特定的软件包中?

1 个答案:

答案 0 :(得分:1)

在application.yml中使用了错误的配置密钥。而不是key-deserializer:应该是keySerde :,而不是value-deserializer:应该是valueSerde。下面是正确的配置:

spring.cloud.stream.kafka.streams.bindings.input: consumer: materializedAs: all-messages keySerde: org.apache.kafka.common.serialization.Serdes$StringSerde valueSerde: com.me.MyMessageSerde producer: keySerde: org.apache.kafka.common.serialization.Serdes$StringSerde valueSerde: com.me.MyMessageSerde