Add sample for the canonical WordCount Showing how to track group of products Showing how to implement interactive queries Fix #41 Update scst versions Enhance kstream samples
47 lines
1.8 KiB
Plaintext
47 lines
1.8 KiB
Plaintext
== What is this app?
|
|
|
|
This is an example of a Spring Cloud Stream processor using Kafka Streams support.
|
|
|
|
The example is based on a contrived use case of tracking products by interactively querying their status.
|
|
The program accepts product ID's and track their counts hitherto by interactively querying the underlying store. \
|
|
This sample uses lambda expressions and thus requires Java 8+.
|
|
|
|
==== Starting Kafka in a docker container
|
|
|
|
* Skip steps 1-3 if you already have a non-Docker Kafka environment.
|
|
|
|
1. Go to the docker directory in this repo and invoke the command `docker-compose up -d`.
|
|
2. Ensure that in the docker directory and then invoke the script `start-kafka-shell.sh`
|
|
3. cd $KAFKA_HOME
|
|
4. Start the console producer: +
|
|
Assuming that you are running kafka on a docker container on mac osx. Change the zookeeper IP address accordingly otherwise. +
|
|
`bin/kafka-console-producer.sh --broker-list 192.168.99.100:9092 --topic products`
|
|
|
|
=== Running the app:
|
|
|
|
Go to the root of the repository and do:
|
|
|
|
`./mvnw clean package`
|
|
|
|
`java -jar target/kstream-interactive-query-0.0.1-SNAPSHOT.jar --kstream.product.tracker.productIds=123,124,125`
|
|
|
|
The above command will track products with ID's 123,124 and 125 and print their counts seen so far every 30 seconds.
|
|
|
|
* By default we use the docker container IP (mac osx specific) in the `application.yml` for Kafka broker and zookeeper.
|
|
Change it in `application.yml` (which requires a rebuild) or pass them as runtime arguments as below.
|
|
|
|
`spring.cloud.stream.kstream.binder.brokers=<Broker IP Address>` +
|
|
`spring.cloud.stream.kstream.binder.zkNodes=<Zookeeper IP Address>`
|
|
|
|
Enter the following in the console producer (one line at a time) and watch the output on the console (or IDE) where the application is running.
|
|
|
|
```
|
|
{"id":"123"}
|
|
{"id":"124"}
|
|
{"id":"125"}
|
|
{"id":"123"}
|
|
{"id":"123"}
|
|
{"id":"123"}
|
|
```
|
|
|