如何将 Avro 生成的模式与 Kafka Connect 自定义源连接器一起使用

How to use Avro generated schemas with Kafka Connect custom source connector

我正在使用 Kafka Connect 开发自定义源连接器,并且我正在尝试合并 Avro 支持。为此,我创建了一些 .avsc 文件来描述我的键和值模式,并将 avro-maven-plugin 添加到我的项目中以自动创建相应的 java 类 我可以在我的项目中使用代码。

从生成的 类 中,我可以将架构作为 org.apache.avro.Schema 类型的对象。

但是源连接器的poll方法的return类型是org.apache.kafka.connect.source.SourceRecord个对象的列表,其构造函数将模式作为org.apache.kafka.connect.data.Schema的实例,并且我只是没有看到将一个转换为另一个的直接方法。

那么我如何获得合适的 key/value 模式实例,然后我可以将其插入 SourceRecords 以从我的连接器中的 poll 方法 returned?

我使用 Avro Maven 插件是否正确,还是应该使用其他插件?

我不确定是否推荐这样做,但是,您可以利用 kafka-connect-avro-converter 库中提供的 AvroData class 来完成转换。

可以在此处找到该库: https://mvnrepository.com/artifact/io.confluent/kafka-connect-avro-converter/5.4.1

class 的来源在这里: https://github.com/confluentinc/schema-registry/blob/5.4.1-post/avro-converter/src/main/java/io/confluent/connect/avro/AvroData.java

您必须实例化 AvroData,然后尝试 toConnectSchema 函数。

您不需要 Kafka Connect 中的 Avro Schema。

Kafka Connect 维护一个内部 StructSchema class,你应该在 SourceRecord / SinkRecord class 之间传递.例如,HTTP 源可以在 Struct class 中定义 int:statusstring:body

基本上,让 Converter 接口负责所有序列化。