我正在使用Protobuf构建用于消息模式的Kafka Streams应用程序。目前,应用程序本身只是从一个主题到另一个主题。 我正在使用Confluent platform all-in-one docker-compose文件在本地运行Kafka。
我的一个架构(foo.proto
)使用一个Struct
字段,因此在启动我的应用之前,我已经在架构注册表中注册了foo.proto
和struct.proto
。 / p>
启动我的应用程序时,protobuf序列化程序将运行一个名为resolveDependencies
的方法,从而使其重新注册subtruct.proto
。 (本地)模式注册表返回带有消息的409:
Schema being registered is incompatible with an earlier schema
最初注册struct.proto
和应用程序的代码都使用3.12
库的版本protobuf-java
。
查看注册表的docker日志,他们通过以下消息为我提供了更多详细信息:
Found incompatible change: Difference{fullPath='#/ListValue/1', type=FIELD_NAMED_TYPE_CHANGED}
查看该特定字段,已经注册的架构具有以下定义
message ListValue {
repeated Value values = 1;
}
以及我的应用程序尝试注册的模式
message ListValue {
repeated .google.protobuf.Value values = 1;
}
我的问题
答案 0 :(得分:0)
在我的情况下,解决方案是不预先注册架构,而是从干净的架构注册表开始。 kafka-streams应用会自动注册相关架构。
我猜我注册原始模式的方式不太正确。