如何将avro生成的模式与kafka connect自定义源连接器一起使用

gcxthw6b  于 2021-06-04  发布在  Kafka
关注(0)|答案(2)|浏览(406)

我正在使用kafka connect开发一个定制的源代码连接器,并且我正在尝试合并avro支持。为此我创造了一些 .avsc 文件来描述我的键和值模式,并添加 avro-maven-plugin 到我的项目中自动创建相应的java类,我可以在代码中使用这些类。
从生成的类中,我可以将模式作为 org.apache.avro.Schema .
但是 poll 源连接器的方法是 org.apache.kafka.connect.source.SourceRecord 对象,其构造函数将模式作为 org.apache.kafka.connect.data.Schema ,我根本看不到一个直接的方法来将一个转换成另一个。
那么,如何获得合适的键/值模式示例,然后将其插入到sourcerecords中,以便从连接器中的poll方法返回?
我使用avro-maven插件是正确的,还是应该使用其他的插件?

klh5stk1

klh5stk11#

我不确定这是否是推荐的,但是,您可以利用 AvroData 课程提供 kafka-connect-avro-converter 库来完成转换。
图书馆位于:https://mvnrepository.com/artifact/io.confluent/kafka-connect-avro-converter/5.4.1
该类的源代码如下:https://github.com/confluentinc/schema-registry/blob/5.4.1-post/avro-converter/src/main/java/io/confluent/connect/avro/avrodata.java
您必须示例化avrodata,然后尝试 toConnectSchema 功能。

bnlyeluc

bnlyeluc2#

您不应该需要kafka connect中的avro模式。
Kafka连接保持一个内部 Struct 以及 Schema 你应该在其中传递的类 SourceRecord / SinkRecord 班级。例如,http源可以定义 int:status , string:body 在一个 Struct 班级。
基本上,让 Converter 接口可用于任何和所有序列化。

相关问题