我有一个应用程序,它定期以原始 JSON 格式生成一组消息。我能够使用 avro-tools 将其转换为 Avro。我这样做是因为由于 Kafka-Connect JDBC 接收器的限制,我需要消息包含架构。我可以在 notepad++ 上打开这个文件,看到它包含架构和几行数据。
现在我想将其发送到我的中央 Kafka Broker,然后使用 Kafka Connect JDBC 接收器将数据放入数据库中。我很难理解我应该如何将这些 Avro 文件发送到我的 Kafka Broker。为了我的目的,我需要一个模式注册表吗?我相信 Kafkacat 不支持 Avro,所以我想我将不得不坚持使用 Kafka 安装附带的 kafka-producer.sh(如果我错了,请纠正我)。
问题是:有人可以在不涉及 Confluent 的情况下,将生成我的 Avro 文件的步骤分享给 Kafka 经纪人吗?
谢谢,
答案 0 :(得分:0)
要使用 Kafka Connect JDBC Sink,您的数据需要一个显式架构。您在连接器配置中指定的转换器确定保存架构的位置。这可以嵌入在 JSON 消息中(org.apache.kafka.connect.json.JsonConverter
和 schemas.enabled=true
)或保存在架构注册表中(io.confluent.connect.avro.AvroConverter
、io.confluent.connect.protobuf.ProtobufConverter
或 io.confluent.connect.json.JsonSchemaConverter
之一) .
要了解更多信息,请参阅 https://www.confluent.io/blog/kafka-connect-deep-dive-converters-serialization-explained
要将 Avro 消息写入 Kafka,您应该将其序列化为 Avro 并将架构存储在架构注册表中。有一个 Go client library 可以与 examples
一起使用 <块引用>没有让 Confluent 参与进来。
您的意思并不完全清楚。 Kafka Connect JDBC Sink 是由 Confluent 编写的。管理模式的最佳方式是使用模式注册表。如果您不想使用架构注册表,那么您可以将架构嵌入到您的 JSON 消息中,但这是一种次优的处理方式。