This module demonstrates the following:
- The usage of the Kafka Streams DSL, including
leftJoin()
between KStream and KTable,selectKey()
andpeek()
. - Unit testing using Topology Test Driver.
In this module, records of type <String, KafkaPerson>
are streamed from a topic named PERSON_TOPIC
, and records of
type <String, KafkaCountry>
are streamed from a topic named COUNTRY_TOPIC
.
The following tasks are performed:
- Join the two streams on the country code and create a new object
KafkaJoinPersonCountry
that contains the person and country information. If no country is matched for a person, a value holding the person is still emitted as a result of theleftJoin()
operation. - Write the resulting
KafkaJoinPersonCountry
objects to a new topic namedPERSON_COUNTRY_LEFT_JOIN_STREAM_TABLE_TOPIC
.
To compile and run this demo, you will need the following:
- Java 21
- Maven
- Docker
To run the application manually, please follow the steps below:
- Start a Confluent Platform in a Docker environment.
- Produce records of type
<String, KafkaCountry>
to a topic namedCOUNTRY_TOPIC
. You can use the producer country to do this. - Produce records of type
<String, KafkaPerson>
to a topic namedPERSON_TOPIC
. You can use the producer person to do this. - Start the Kafka Streams.
To run the application in Docker, please use the following command:
docker-compose up -d
This command will start the following services in Docker:
- 1 Kafka broker KRaft
- 1 Schema registry
- 1 Control Center
- 1 producer Country
- 1 producer Person
- 1 Kafka Streams Left Loin Stream Table