Example Java Kafka Producer
Source Code
https://github.com/pactflow/example-provider-java-kafka
This is an example of a Java Spring Boot Kafka Producer that uses Pact, PactFlow and GitHub Actions to ensure that it is compatible with the expectations its consumers have of it.
See the canonical provider example here: https://github.com/pactflow/example-provider See also the full PactFlow CI/CD Workshop for which this can be substituted in as the "provider".
In the following diagram, we'll be testing the "Event API", a service that publishes product events to a Kafka stream on the product
topic.
Pre-requisites
Software:
- Tools listed at: https://docs.pactflow.io/docs/workshops/ci-cd/set-up-ci/prerequisites/
- Java (11+)
- A pactflow.io account with an valid API token
Environment variables
To be able to run some of the commands locally, you will need to export the following environment variables into your shell:
PACT_BROKER_TOKEN
: a valid API token for PactFlowPACT_BROKER_BASE_URL
: a fully qualified domain name with protocol to your pact broker e.g. https://dius.pactflow.ioPACT_BROKER_HOST
: a fully qualified domain name without protocol to your pact broker e.g. dius.pactflow.io
Usage
Running tests:
./gradlew clean test
Start a Kafka cluster, and setup the producer endpoint (enables
POST
tolocalhost:8081/products
):make start
Create a new event (manually):
curl -X POST -H"Content-Type: application/json" localhost:8081/products -d '{
"id": "7e54c13c-e28e-41fc-b34d-99de62db4666",
"name": "Unbranded Plastic Tuna",
"type": "BACON",
"event": "UPDATED",
"version": "v1"
}'
To disable test data generation that puts random events onto product
topic, prefix with SEND_TEST_EVENTS=false
. e.g. SEND_TEST_EVENTS=false make start