【发布时间】:2018-12-28 00:16:19
【问题描述】:
我有一个基于 Kafka 构建的事件源应用程序。目前我有一个主题,其中包含多种消息类型。全部用 JSON 序列化/反序列化。
confluent 中的模式注册表看起来是一种很好的消息类型维护方法,并且在 Avro 完全兼容模式下,它还提供了一种在我的事件源应用程序中进行消息版本控制的机制。
与最近的patch -- blog post 到 4.1.1 融合。使用 Avro 序列化器/反序列化器,您可以在一个主题中包含多种不同类型的消息。
但是,我还没有看到任何可行的示例。一个也没有。
我的问题是:上面的补丁真的可以在不使用 Avro 联合类型(将所有不同类型的消息放在一个模式中并利用联合)的情况下工作吗?
这种方法如何与需要指定 Key 和 Value Serde 的 Kafka Streaming 应用程序一起使用?
我是否应该忘记 Avro 而只使用 protobuff?
【问题讨论】:
-
经过更多研究和运行 POC。我选择了protobuff3。我设法创建了一个 protobuff 消息模式,并且该消息具有“Any”类型的一个属性。 Any 类型是我的有效负载,通过它我设法创建了一个通用主题、通用序列化器和反序列化器,我可以在我的代码中利用它们来重构在“Any”参数中序列化的不同类型的消息。
标签: apache-kafka avro apache-kafka-streams event-sourcing confluent-schema-registry