Search code examples
apache-kafkaavroconfluent-schema-registry

Use kafka-avro-console-producer with a schema already in the schema registry


I would like to use the kafka-avro-console-producer with the schema registry. I have big schemas (over 10k chars) and I can't really past them as a command line argument. Besides that I'd like to use the schema registry directly so I can use a specific schema id.

I'm thinking about something like this, but it doesn't work:

kafka-avro-console-producer \
 --broker-list <broker-list> \
 --topic <topic>  \
 --property schema.registry.url=http://localhost:8081 \
 --property value.schema=`curl http://localhost:8081/schemas/ids/419`

Solution

  • For the current version of the CLI tool

    kafka-avro-console-producer \
     --broker-list <broker-list> \
     --topic <topic>  \
     --property schema.registry.url=http://localhost:8081 \
     --property value.schema.id=419
    

    For older version

    You'll need to extract the schema from the API request using jq, for example

    value.schema="$(curl http://localhost:8081/schemas/ids/419 | jq -r .schema)"