64 lines
2.2 KiB
Plaintext
64 lines
2.2 KiB
Plaintext
== Spring Cloud Stream Kafka Streams Interactive Query (basic)
|
|
|
|
This sample demonstrates a Spring Cloud Stream processor using Kafka Streams basic state store query support.
|
|
|
|
=== Application
|
|
The app is based on a contrived use case of tracking products by interactively querying their status. The program accepts product ID's and tracks their counts hitherto by interactively querying the underlying store.
|
|
|
|
[[build-app]]
|
|
=== Building
|
|
To build the app simply execute the following command:
|
|
[source,bash]
|
|
----
|
|
./mvnw clean install
|
|
----
|
|
|
|
=== Running
|
|
|
|
==== Ensure these pre-requisites
|
|
****
|
|
* The app has been built by following the <<build-app>> steps
|
|
* Apache Kafka broker available at `localhost:9092`
|
|
|
|
[#kafka_tools]
|
|
TIP: The included xref:../../../tools/kafka/docker-compose/README.adoc#run_kafka_cluster[Kafka tools] can be used to easily start a broker at the required coordinates
|
|
****
|
|
|
|
==== Start the streams app
|
|
[source,bash]
|
|
----
|
|
java -jar target/kafka-streams-interactive-query-basic-4.0.0-SNAPSHOT.jar --app.product.tracker.product-ids=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.
|
|
|
|
===== Send input messages
|
|
Leverage the Kafka command line tool `kafka-console-producer` to send messges (products) to the input topic.
|
|
|
|
Issue the following command on a separate terminal:
|
|
|
|
[source,bash]
|
|
----
|
|
docker exec -it broker1 /bin/kafka-console-producer --broker-list broker1:29091 --topic products
|
|
----
|
|
NOTE: The command reference `broker1` and `broker1:29091` as they assume the aforementioned <<kafka_tools,Kafka Tools>> are used to create the cluster. If you start up your own cluster you will need to adjust the coordinates accordingly. Also note that the port is `29091` as that is the internal port configured on the cluster (rather than the expected `9091`)
|
|
|
|
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.
|
|
|
|
[source,bash]
|
|
----
|
|
{"id":"123"}
|
|
{"id":"124"}
|
|
{"id":"125"}
|
|
{"id":"123"}
|
|
{"id":"123"}
|
|
{"id":"123"}
|
|
----
|
|
|
|
The output should look something like the following:
|
|
[source,bash]
|
|
----
|
|
Product ID: 123 Count: 4
|
|
Product ID: 124 Count: 1
|
|
Product ID: 125 Count: 1
|
|
----
|