使用kafka-avro-console-producer时,可以通过手动注册Schema来发送Avro格式的消息到Kafka。以下是一个示例解决方法:
avro/user.avsc文件中,可以使用以下命令进行注册:curl -X POST -H "Content-Type: application/vnd.schemaregistry.v1+json" \
--data '{"schema": "{\"type\":\"record\",\"name\":\"User\",\"fields\":[{\"name\":\"name\",\"type\":\"string\"},{\"name\":\"age\",\"type\":\"int\"}]}"}' \
http://localhost:8081/subjects/user-value/versions
kafka-avro-console-producer \
--broker-list localhost:9092 \
--topic test-topic \
--property value.schema='{"type":"record","name":"User","fields":[{"name":"name","type":"string"},{"name":"age","type":"int"}]}' \
--property schema.registry.url=http://localhost:8081
在上述命令中,--broker-list指定Kafka broker的地址,--topic指定要发送消息的topic。--property value.schema指定Avro Schema,--property schema.registry.url指定Schema Registry的地址。
注意:在发送消息之前,确保Kafka和Schema Registry都已经启动,并且Schema已经注册到Schema Registry中。