44 lines
1.8 KiB
Markdown
44 lines
1.8 KiB
Markdown
Spring Cloud Stream Source Sample
|
|
=============================
|
|
|
|
In this *Spring Cloud Stream* sample, a source application publishes messages to dynamically created destinations.
|
|
|
|
## Requirements
|
|
|
|
To run this sample, you will need to have installed:
|
|
|
|
* Java 8 or Above
|
|
|
|
This example requires RabbitMQ to be running on localhost.
|
|
|
|
## Code Tour
|
|
|
|
The class `SourceWithDynamicDestination` is a REST controller that registers the 'POST' request mapping for '/'.
|
|
When a payload is sent to 'http://localhost:8080/' by a POST request (port 8080 is the default), this application
|
|
then uses `BinderAwareChannelResolver` to resolve the destination dynamically at runtime. Currently, this resolver uses
|
|
`payload` as the SpEL expression to resolve the destination name. Hence, if a payload `testing` is sent to the app, then
|
|
this source application sends the message `testing` into the Rabbit exchange `testing`. This exchange or topic (in case
|
|
of Kafka if Kafka binder is used) is created dynamically and bound to send the payload.
|
|
|
|
|
|
Upon starting the application on the default port 8080, if the following data are sent:
|
|
|
|
curl -H "Content-Type: application/json" -X POST -d '{"id":"customerId-1","bill-pay":"100"}' http://localhost:8080
|
|
|
|
curl -H "Content-Type: application/json" -X POST -d '{"id":"customerId-2","bill-pay":"150"}' http://localhost:8080
|
|
|
|
The destinations 'customerId-1' and 'customerId-2' are created at the broker (for example: exchange in case of Rabbit or topic in case of Kafka with the names 'customerId-1' and 'customerId-2') and the data are published to the appropriate destinations dynamically.
|
|
|
|
## Building with Maven
|
|
|
|
Build the sample by executing:
|
|
|
|
source>$ mvn clean package
|
|
|
|
## Running the Sample
|
|
|
|
To start the source module execute the following:
|
|
|
|
source>$ java -jar target/spring-cloud-stream-sample-dynamic-source-1.1.0.BUILD-SNAPSHOT-exec.jar
|
|
|