【发布时间】:2020-06-27 15:59:46
【问题描述】:
我正在使用 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 插件方面是否走在正确的轨道上,还是应该使用其他东西?
【问题讨论】:
-
欢迎来到 StackOverflow!我只熟悉 Kafka Connect 框架的整体,而不是编写连接器的细节——但是如果你正在编写一个连接器,那么你不需要对 Avro 做任何事情,因为这是由 处理的转换器 下游。这些资源中的任何一个有帮助吗? opencredo.com/blogs/…docs.confluent.io/current/connect/devguide.html
-
我已经阅读了您链接的页面,它们对我没有帮助。问题是我希望架构定义(即 .avsc 文件)独立于我的项目而存在。这应该是微服务架构的一部分,并且模式是一种 API,服务用于相互通信。如果我让 Kafka Connect 从我的代码中生成和注册模式,那么它们将不容易被其他甚至可能不是用 Java 编写的服务所使用,所以我想以某种方式反转该过程并使代码遵循模式。
-
然后你需要为你的模式创建一个单独的项目,并将它们上传到一个 Maven 服务以供其他项目使用。
标签: apache-kafka avro apache-kafka-connect