在没有 Confluent Schema Registry 的情况下在 KafkaConnect 中使用 Avro

Use Avro in KafkaConnect without Confluent Schema Registry

我们在当前的基础设施中安装了 vanilla apache Kafka,我们开始记录一些我们想要使用 Kafka Connect 处理的数据。目前我们使用 Avro 作为我们的消息格式,但我们的基础设施中没有架构注册表。 将来,我们计划用 Confluent 替换当前堆栈并使用 Schema Registry 和 Connect,但有一段时间我们只需要为此部署 Connect。

是否可以以某种方式配置 Connect 接收器,以便它们使用显式 avsc 文件或模式而不连接到模式注册表并且不使用具有魔法字节和模式 ID 的 Confluent 格式?

是的,但您将不得不实施自己的 Converter 来处理原始 avro 记录。然后,您将指定 avsc 文件的位置,或者可以使用 [value|key].converter 命名空间在连接器配置中提供架构的服务。

例如,Confluent AvroConverter 需要 属性 告诉它 Schema Registry 在哪里:

value.converter=io.confluent.connect.avro.AvroConverter
value.converter.schema.registry.url=http://schema-registry:8081

所以您可以复制 Confluent AvroConverter 但可能会提供 avsc 文件的路径?

是的,可以在 Github 上使用 registryless-avro-converter

按照那里的构建说明,在加载其他连接器时将 JAR 添加到您的 plugin.path 文件夹,然后像这样设置

key.converter=me.frmr.kafka.connect.RegistrylessAvroConverter
key.converter.schema.path=/path/to/schema/file.avsc
value.converter=me.frmr.kafka.connect.RegistrylessAvroConverter
value.converter.schema.path=/path/to/schema/file.avsc

请注意,这将要求您 store/maintain/sync 所有 Connect 工作人员 上的架构文件,但是


或者,您可以使用香草 Kafka 设置模式注册表 - 没有理由进行一些“融合迁移”,因为除了序列化器和反序列化器配置之外,注册表不需要任何基础结构更改。