如何在AvroConverter注册Schema时指定subject-level兼容性配置
解决方法
你可以通过两种方式实现AvroConverter注册Schema时自动设置subject级兼容性:
- 方案1:直接配置Kafka Connect AvroConverter参数
Confluent 6.2.1版本对应的AvroConverter原生支持兼容性级别配置参数,你只需要在Kafka Connect worker配置或者单个Connector的配置中追加以下参数即可:
针对Key的Converter:key.converter.compatibility.level = <你需要的兼容性级别>
针对Value的Converter:value.converter.compatibility.level = <你需要的兼容性级别>
可选的兼容性级别包括:BACKWARD、BACKWARD_TRANSITIVE、FORWARD、FORWARD_TRANSITIVE、FULL、FULL_TRANSITIVE、NONE,和Schema Registry支持的兼容性取值完全一致。配置后AvroConverter每次自动注册新Schema时,都会自动给对应subject设置你指定的兼容性级别。 - 方案2:预先为目标subject设置兼容性
如果你不想调整Kafka Connect配置,也可以提前通过Schema Registry的REST接口为所有需要用到的subject预先配置兼容性级别,执行请求:
预先配置完成后,后续AvroConverter自动注册Schema时会直接沿用已有的subject级兼容性配置,不会出现未配置的报错。PUT /config/<your-subject-name> { "compatibility": "<你需要的兼容性级别>" }
注意:如果你的环境有全局兼容性配置,建议subject级的兼容性配置和全局配置保持一致,避免出现Schema注册校验失败的问题。
内容的提问来源于stack exchange,提问作者Mikhail Dubrovin
相关产品推荐
相关产品推荐

