Introduction
Redpanda is a Kafka-compatible event stream platform written in C++.
It comes with a simple command-line interface called rpk that lets you interact with the platform.
In this tutorial, we will be using the rpk command-line interface to produce events to a topic in Redpanda from a shell script. If topics and partitions are new to you, the message queue simulator shows how they work.
Setup
You can follow the instructions from the Redpanda documentation to install Redpanda and the rpk command-line interface:
Once you have installed Redpanda and the rpk command-line interface you would also have to install the jq command-line utility:
Create a topic
To create a topic you need to run the following command:
rpk topic create my-topic
Produce a record
As stated in the Redpanda documentation the producing records reads from STDIN. You can produce a record to a topic by running the following command:
rpk record produce my-topic
// Then type the record that you want to produce e.g.:
// '{"key": "value"}'
Shell script
The above command produces a record to a topic ad hoc, however, you can also produce a record to a topic using a shell script too.
Here are a few examples of how to produce a record to a topic:
Produce a record to a topic using jq
First, start by creating your message in JSON format:
JSON_STRING=$( jq -n --arg id "$ID" --arg name "user_$ID" '{id: $id, name: $name}' ) ;
Then you can produce a record to a topic using the rpk command-line interface:
echo "$JSON_STRING" | rpk record produce my-topic
To put this into a demo script that generates random user IDs and names in a loop you can use the following:
#!/bin/bash
# Create Redpanda topic
rpk topic create demo
# Counter for the id
ID=1
# Infinite loop to produce data
while true ; do
JSON_STRING=$( jq -n --arg id "$ID" --arg name "user_$ID" '{id: $id, name: $name}' );
# Send the message
echo ${JSON_STRING} ; done | rpk topic produce demo
# Increment the id
ID=$((id+1))
done
Produce a record to a topic from a file
If you already have a file with the message you want to produce you can use the rpk command-line interface to produce a record to a topic:
cat messages.json | rpk record produce my-topic
Conclusion
For more information about Redpanda and the rpk command-line interface, you can visit the Redpanda documentation.
To see Redpanda in action, make sure to check out this demo here:
Happy coding!