【问题标题】:Use Avro in KafkaConnect without Confluent Schema Registry在没有 Confluent Schema Registry 的情况下在 KafkaConnect 中使用 Avro
【发布时间】:2019-02-19 08:11:21
【问题描述】:

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

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

【问题讨论】:

    标签: apache-kafka avro apache-kafka-connect confluent-schema-registry


    【解决方案1】:

    是的,可以在 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
    

    请注意,这需要您在所有 Connect 工作人员上存储/维护/同步架构文件,但是


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

    【讨论】:

    • 是否有可能将架构作为字符串或其他东西提供而不是使用路径从文件中提供
    • 我从未使用过该代码。您必须在该仓库中发布问题或查看代码
    【解决方案2】:

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

    例如,Confluent AvroConverter 需要一个属性来告诉它架构注册表在哪里:

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

    所以您可以复制Confluent AvroConverter,但也许可以提供 avsc 文件的路径?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-06
      • 1970-01-01
      • 1970-01-01
      • 2022-12-27
      • 2018-09-27
      • 2021-10-04
      • 2016-12-31
      • 2021-05-11
      相关资源
      最近更新 更多