向 Kafka 发送 Avro 消息

时间:2021-03-31 23:54:38

标签: apache-kafka apache-kafka-connect

我有一个应用程序,它定期以原始 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 经纪人吗?

谢谢,

1 个答案:

答案 0 :(得分:0)

要使用 Kafka Connect JDBC Sink,您的数据需要一个显式架构。您在连接器配置中指定的转换器确定保存架构的位置。这可以嵌入在 JSON 消息中(org.apache.kafka.connect.json.JsonConverterschemas.enabled=true)或保存在架构注册表中(io.confluent.connect.avro.AvroConverterio.confluent.connect.protobuf.ProtobufConverterio.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 消息中,但这是一种次优的处理方式。