向 Kafka 发送 Avro 消息

Sending Avro messages to Kafka

我有一个应用程序可以定期生成一组原始 JSON 消息。我能够使用 avro-tools 将其转换为 Avro。我这样做是因为由于 Kafka-Connect JDBC 接收器的限制,我需要消息包含模式。我可以在记事本++上打开这个文件,看到它包括模式和几行数据。

现在我想将其发送到我的中央 Kafka Broker,然后使用 Kafka Connect JDBC sink 将数据放入数据库中。我很难理解我应该如何将这些 Avro 文件发送到我的 Kafka Broker。我需要模式注册表来满足我的目的吗?我相信 Kafkacat 不支持 Avro,所以我想我将不得不坚持使用 Kafka 安装附带的 kafka-producer.sh(如果我错了请纠正我)。

问题是:有人可以分享在不让 Confluent 参与的情况下向 Kafka 代理生成我的 Avro 文件的步骤吗?

谢谢,

要使用 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 并将模式存储在模式注册表中。有围棋client library to use with examples

without getting Confluent getting involved.

您的意思还不完全清楚。 Kafka Connect JDBC Sink 由 Confluent 编写。管理模式的最佳方式是使用模式注册表。如果您不想使用架构注册表,那么您可以将架构嵌入到您的 JSON 消息中,但这是一种次优的处理方式。