Kafka Streams API如何从Schema Registry获得正确的架构?

时间:2019-11-24 21:02:48

标签: apache-kafka-streams confluent confluent-schema-registry

我尝试了解Kafka Streams API如何与Schema Registry一起使用。

我知道您在设置应用程序时必须指定架构注册表URL,但是我无法理解我的应用程序如何在不指定使用者名称或ID的情况下从注册表中检索正确的架构。

它使用主题名称检索架构吗?

1 个答案:

答案 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'