Refactoring samples
Restructuring the samples repository Add more docker support Add acceptance tests for the apps Adding sensor average processor sample Remove aggregate samples
This commit is contained in:
84
source-samples/jdbc-source/README.adoc
Normal file
84
source-samples/jdbc-source/README.adoc
Normal file
@@ -0,0 +1,84 @@
|
||||
Spring Cloud Stream Source Sample
|
||||
==================================
|
||||
|
||||
## What is this app?
|
||||
|
||||
This is a Spring Boot application that is a Spring Cloud Stream sample source app that polls a JDBC Source.
|
||||
This application specifically uses MySQL (MariaDB flavor) to query a particular table and output the contents of the table every n seconds(details below).
|
||||
In reality, you probably want to use the out of the box variant of JDBC source from https://github.com/spring-cloud-stream-app-starters/jdbc which is more advanced.
|
||||
Refer to the documentation of Spring Cloud Stream app starters for the latest links for generated apps for specific binders.
|
||||
|
||||
## What is the default binder used in this app?
|
||||
|
||||
The default binder used in this app is Kafka.
|
||||
If you need to change it to Rabbitmq, change the appropriate dependency in the maven pom.xml
|
||||
|
||||
## Requirements
|
||||
|
||||
To run this sample, you will need to have installed:
|
||||
|
||||
* Java 8 or Above
|
||||
|
||||
This sample Source uses Spring Integration to poll a JDBC source and requires a Poller.
|
||||
The app provides a basic trigger based Poller which polls every 5 seconds by default.
|
||||
You can change the polling frequency by using the property `jdbc.triggerDelay`.
|
||||
|
||||
# Additional properties used in this app
|
||||
|
||||
Refer to the `application.yml` for the defaults used for the following properties.
|
||||
|
||||
`jdbc.query` - SQL used to query the database.
|
||||
`jdbc.update` - SQL used to skip records already seen (details below)
|
||||
|
||||
## Running the application using Kafka binder
|
||||
|
||||
The following instructions assume that you are running Kafka and MySql as Docker images.
|
||||
|
||||
* Go to the application root
|
||||
* `docker-compose up -d`
|
||||
|
||||
* Open another terminal
|
||||
* Ensure that you have the `mysql` CLI tool installed and then use this command:
|
||||
`mysql -u root -p -h 127.0.0.1 -P 3306 sample_mysql_db`
|
||||
|
||||
`sample_mysql_db` is the name of the database created by the mysql that is running in the docker container.
|
||||
|
||||
* Go back to the other terminal (root of this sample app `source`)
|
||||
* `./mvnw clean package`
|
||||
|
||||
When you start the app, it will insert some test data into the database.
|
||||
See the method annotated with`PostConstruct` in the application.
|
||||
|
||||
* `java -jar target/sample-jdbc-source-0.0.1-SNAPSHOT.jar`
|
||||
|
||||
The application has a convenient test sink that consumes from the same destination where the source sends data.
|
||||
This test sink will output the data on the console.
|
||||
Alternatively, you can connect to the topic using a Kafka console consumer and watch the output.
|
||||
|
||||
## Changing the default behavior of the app.
|
||||
|
||||
If you want to query the app every second now, and ignore any records that you already saw, there are provisions for that in this sample.
|
||||
|
||||
* Stop the app
|
||||
* `java -jar target/sample-jdbc-source-0.0.1-SNAPSHOT.jar --jdbc.triggerDelay=1 --jdbc.query="select id, name, tag from test where tag is NULL order by id" --jdbc.update="update test set tag='1' where id in (:id)"`
|
||||
|
||||
* Now go to your MySQL CLI: Insert some data
|
||||
|
||||
`insert into test values (20, 'Bob', NULL);`
|
||||
`insert into test values (22, 'Bob', NULL);`
|
||||
|
||||
Watch the data appear on the application console.
|
||||
|
||||
Once you are done testing, stop Kafka running in the docker container: `docker-compose down`
|
||||
|
||||
## Running the application using Rabbit binder
|
||||
|
||||
All the instructions above apply here also, but instead of running the default `docker-compose.yml`, use the command below to start a Rabbitmq cluser.
|
||||
|
||||
* `docker-compose -f docker-compose-rabbit.yml up -d`
|
||||
|
||||
* `./mvnw clean package -P rabbit-binder`
|
||||
|
||||
* `java -jar target/sample-jdbc-source-0.0.1-SNAPSHOT.jar`
|
||||
|
||||
Once you are done testing: `docker-compose -f docker-compose-rabbit.yml down`
|
||||
Reference in New Issue
Block a user