【发布时间】:2021-07-09 12:47:29
【问题描述】:
示例:- 我有一个名为
的字段"abc":[
{"key1":"value1", "key2":"value2"},
{"key1":"value1", "key2":"value2"}
]
Consumer1,consumer2 使用这个变量,而现在 consumer2 需要的字段更少,需要更改结构。
如何通过遵循最佳实践来解决这个问题?
【问题讨论】:
标签: apache-kafka avro
示例:- 我有一个名为
的字段"abc":[
{"key1":"value1", "key2":"value2"},
{"key1":"value1", "key2":"value2"}
]
Consumer1,consumer2 使用这个变量,而现在 consumer2 需要的字段更少,需要更改结构。
如何通过遵循最佳实践来解决这个问题?
【问题讨论】:
标签: apache-kafka avro
您可以在 Avro 架构中使用 type map。 key 始终是 string 和 value 可以是任何类型,但应该是整个地图的一种类型。
因此,在您的情况下,将地图引入您的架构中。 consumer_1 可以使用该事件并获取它们仅用于consumer_1 的密钥,并对consumer_2 执行相同的操作。但仍然是相同的 Avro 架构。
注意:您不能将 null 发送到架构中的地图。你需要发送空地图。
【讨论】:
如果可能,请引入架构注册表服务器以进行架构版本控制。在模式注册表中注册所有不同的 avro 模式,并将给出版本 ID。将您的生产者和消费者应用程序与模式注册服务器连接,以获取相应 Kafka 消息的注册模式。现在,任何消费者都可以完全兼容地接收具有任何模式的消息。
【讨论】: