A Strimzi Kafka Quickstart for Quarkus with Strimzi CLI
 
								Table of Contents
This project illustrates how you can interact with Apache Kafka on Kubernetes (Strimzi) using MicroProfile Reactive Messaging.
First you need a Kafka cluster on your OpenShift.
Create a namespace first:
 oc new-project kafka-quickstartThen you will need Strimzi Kafka CLI by running the following command (you will need Python3 and pip):
 sudo pip install strimzi-kafka-cliSee here for other details about Strimzi Kafka CLI.
After installing Strimzi Kafka CLI run the following command to install the operator on kafka-quickstart namespace:
 kfk operator --install -n kafka-quickstartWhen the operator is ready to serve, run the following command in order to create a Kafka cluster:
 kfk clusters --create --cluster my-cluster -n kafka-quickstartA vim interface will pop-up.
If you like you can change the broker and zookeeper replicas to 1 but I suggest you to leave them as is if your Kubernetes cluster have enough resources.
Save the cluster configuration file and respond Yes to make Strimzi CLI apply the changes.
Wait for the 3 broker and 3 zookeeper pods running in ready state in your cluster:
 oc get pods -n kafka-quickstart -wWhen all pods are ready, create your prices topic to be used by the application:
 kfk topics --create --topic prices --partitions 10 --replication-factor 2 -c my-cluster -n kafka-quickstartCheck your topic is created successfully by describing it natively:
kfk topics --describe --topic prices -c my-cluster -n kafka-quickstart --nativeThe application can be deployed to OpenShift using:
 ./mvnw clean package -DskipTestsThis will take a while since the s2i build will run before the deployment.
Be sure the application's pod is running in ready state in the end.
Run the following command to get the URL of the Prices page:
echo http://$(oc get routes -n kafka-quickstart -o json | jq -r '.items[0].spec.host')/prices.html Copy the URL to your browser, and you should see a fluctuating price.
In addition to the prices.html page, the application is composed by 3 components:
- PriceGenerator
- PriceConverter
- PriceResource
We generate (random) prices in PriceGenerator.
These prices are written in prices Kafka topic that we recently created.
PriceConverter reads from the prices Kafka topic and apply some magic conversion to the price.
The result is sent to an in-memory stream consumed by a JAX-RS resource PriceResource.
The data is sent to a browser using server-sent events.
The interaction with Kafka is managed by MicroProfile Reactive Messaging. The configuration is located in the application configuration.
You can compile the application into a native binary using:
mvn clean install -Pnativeor deploy with:
 ./mvnw clean package -Pnative -DskipTestsThis demo is based on the following resources:
Visit the following link to clone this demo:
https://github.com/systemcraftsman/quarkus-strimzi-cli-demos
 
								