我尝试了解Kafka Streams API如何与Schema Registry一起使用。
我知道您在设置应用程序时必须指定架构注册表URL,但是我无法理解我的应用程序如何在不指定使用者名称或ID的情况下从注册表中检索正确的架构。
它使用主题名称检索架构吗?
答案 0 :(得分:2)
我尝试了解Kafka Streams API如何与Schema Registry一起使用。
Kafka Streams通过在Kafka Streams应用程序中使用可识别架构注册的Serde(序列化器/反序列化器)与Confluent Schema Registry集成。如今,Schema Registry仅支持Avro作为数据格式(已计划了诸如Protobuf和JSON的其他格式),因此存在与Schema Registry集成的Avro Serde。参见Confluent的Kafka Streams documentation on 'Avro Serde'。
我知道您在设置应用程序时必须指定架构注册表URL 因此,请参见上文,因此在配置Kafka Streams应用程序时必须指定SR URL,因为此设置将从Kafka Streams传递到Avro Serde。
如果不指定使用者名称或ID,我将无法理解我的应用程序如何从注册表中检索正确的架构。
Schema Registry中的主题名称是主题名称和后缀的组合,其后缀是-key
或-value
,具体取决于Serde用于对Kafka消息密钥或Kafka进行序列化/反序列化消息值(请参见Schema Registry documentation on 'Subjects')。换句话说,存在一个命名约定,该约定映射模式中的Kafka topic (使用Avro serde从您的Kafka Streams应用程序读取或写入)和 subjects 注册表。
此外,模式可能具有模式ID ,该模式用于在同一主题(以及主题)下注册了多个模式的情况下消除模式解析的歧义。参见Schema Registry documentation on 'Schema IDs'。