我们最近将我们的kafka版本从0.10更新为1.0,我正在更新已弃用的代码
KTable<Long, myClass> myKTable = this.streamBuilder
.stream(Serdes.Long(), mySerde, sub_topic)
.groupByKey(Serdes.Long(), mySerde)
.reduce(myReducer, my_store);
到这个
KTable<Long, myClass> myKTable = this.streamBuilder
.stream(sub_topic, Consumed.with(Serdes.Long(), mySerde))
.groupByKey(Serialized.with(Serdes.Long(), mySerde))
.reduce(myReducer, Materialized.as(my_store));
我的流在groupByKey
中序列化时抛出错误。 Serialized.with()
未使用提供的keySerde
,默认返回byteArray
。然后这个byteArray serde
遇到我的密钥Long
并抛出一个强制转换错误。
有没有其他人在kafka的1.0.0版本中遇到此错误。具有过时版本的kafka的第一个代码工作正常。但更新代码以使用Serialized.with()
似乎不起作用。非常感谢任何帮助。
答案 0 :(得分:0)
你能分享堆栈跟踪吗?我实际上认为问题出在reduce()
- 您需要再次通过Serdes
指定Materialized
。
这是对新API的回归,最近在trunk
得到修复:https://github.com/apache/kafka/pull/4919因此,即将推出的2.0版本将包含修复程序。