编写 Avro 生产者时是否需要单独的密钥模式(字段模式除外)?

Is there a need of seperate Key Schema(other than a schema for fields) while writing Avro producer?

我正在为我的项目编写 Java Avro Producer 代码。我已经为所有需要传递的字段注册了一个 Avro 模式。

我注册的模式-

{

"名称": "声明",

"类型": "记录",

"命名空间": "com.schema.avro",

“字段”:[

{

  "name": "icn",

  "type": "string"

},

{

  "name": "fln,

  "type": "int"

},

]

}

我使用“icn”字段值作为键,但我没有单独注册的键模式。我不确定是否需要这样做。

i) 我可以直接使用当前模式中已有的字段(在本例中为“icn”)作为键,而无需注册键模式吗?

ii) 我需要单独注册密钥模式吗?如果是这样,那部分架构是否已经为字段创建或者有所不同?

您不需要为密钥使用 avro。如果您的密钥是字符串类型,您可以使用 org.apache.kafka.common.serialization.StringSerializer。如果要使用 avro,则需要为每个对象类型注册架构。