我们在当前的基础设施中设置了vanilla apache Kafka,我们开始记录一些我们想使用Kafka Connect处理的数据。目前我们使用 Avro 作为消息格式,但我们的基础架构中没有架构注册表。 将来,我们计划用 Confluent 替换当前堆栈并使用 Schema Registry 和 Connect,但在一段时间内,我们只需要为此部署 Connect。
是否可以以某种方式配置 Connect 接收器,以便它们使用显式 avsc 文件或架构,而无需连接到架构注册表,也不使用具有魔术字节和架构 ID 的 Confluent 格式?
是的,可以在Github上使用无注册表avro转换器。
按照那里的构建说明进行操作,在加载其他连接器时将 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 设置架构注册表 - 没有理由进行一些"Confluent 迁移",因为注册表不需要任何基础结构更改,除了序列化程序和反序列化程序配置。
是的,但是您必须实现自己的转换器来处理香草avro记录。然后,您将指定 avsc 文件的位置,或者可以使用[value|key].converter
命名空间在连接器配置中提供架构的服务。
例如,ConfluentAvroConverter
需要一个属性来告诉它架构注册表的位置:
value.converter=io.confluent.connect.avro.AvroConverter
value.converter.schema.registry.url=http://schema-registry:8081
所以你可以复制 Confluent AvroConverter,但也许提供一个 avsc 文件的路径?