我将来自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?解/序列化器是否需要放在特定的软件包中?
答案 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