This application demonstrates how to create a Quarkus application that retrieves messages from a Kafka topic ("power") and inserts the events into a database.
It features:
- a DevicePower class that represents the database entity
- a KafkaResource class that shows how to retrieve messages from a Kafka topic
- a PowerResource class that returns the values from the database table
You can run this demo on your local machine with Quarkus Dev Mode (see below) which will spin up a Kafka and PostgreSQL testcontainer. The application.properties file shows how to set limits, requests, secrets and configmaps for your kubernetes environment.
If you need a Kubernetes cloud environment to test with, you can get a free Openshift Developer sandbox at https://developers.redhat.com/sandbox.
You will have to create the configmap and secret before deploying the application. Examples can be found in the src/main/kube folder. You will also need to create a postgresql database (db 'quarkus') and a Kafka cluster. You can use the kafka.yml and postgresql.yml in the same src/main/kube folder if you want simple ephemeral test instances.
You can apply these files with kubectl apply -f src/main/kube
.
Before building & deploying the container image, make sure to update the application.properties to point to your registry:
quarkus.container-image.registry=quay.io
quarkus.container-image.group=kevindubois
Then you can package your app, build it into a container and push to a registry with quarkus image push --also-build
And deploy it with quarkus deploy
If you want to learn more about Quarkus, please visit its website: https://quarkus.io/ .
You can run your application in dev mode that enables live coding using:
./mvnw compile quarkus:dev
NOTE: Quarkus now ships with a Dev UI, which is available in dev mode only at http://localhost:8080/q/dev/.
The application can be packaged using:
./mvnw package
It produces the quarkus-run.jar
file in the target/quarkus-app/
directory.
Be aware that it’s not an über-jar as the dependencies are copied into the target/quarkus-app/lib/
directory.
The application is now runnable using java -jar target/quarkus-app/quarkus-run.jar
.
If you want to build an über-jar, execute the following command:
./mvnw package -Dquarkus.package.type=uber-jar
The application, packaged as an über-jar, is now runnable using java -jar target/*-runner.jar
.
You can create a native executable using:
./mvnw package -Dnative
Or, if you don't have GraalVM installed, you can run the native executable build in a container using:
./mvnw package -Dnative -Dquarkus.native.container-build=true
You can then execute your native executable with: ./target/kubenative-1.0.0-SNAPSHOT-runner
If you want to learn more about building native executables, please consult https://quarkus.io/guides/maven-tooling.