== Basic Spring Cloud Source Application
This project contains a Spring Cloud Source applications that publishes a String at a regular interval to initiate the stream. For this example, publish a name as a String.
The example shows how the Spring Cloud Stream concept of a Source maps to the logical equivalent of the Java 8 function Supplier.
This Source application can be used in conjunction with Processor and Sink applications to show a full end to end flow. The Processor uses a Java 8 Function and the Sink uses a Java 8 Consumer.
You can create these additional applications by using the Spring CLI command
spring cli new scs-processor
and
spring cli new scs-sink
== Prerequisites
To use Spring Cloud Stream functionality, we need to ensure that a message broker is accessible. For this guide, we use RabbitMQ. If a local Docker environment is found, the following command can start RabbitMQ:
docker run -d --hostname my-rabbit --name some-rabbit -p 15672:15672 -p 5672:5672 rabbitmq:3-managementThe result is that RabbitMQ should be accessible locally with the username/password of guest/guest.
== Building the Source Application
./mvnw clean package
This runs unit tests, which are a bit advanced to explain in a short getting started guide. The Spring Cloud Stream reference docs have more information.
== Running the Source Application
./mnvw spring-boot:run
There are unit test
The Source (java.util.function.Supplier) is defined in NameSourceConfiguration as:
@Bean
public Supplier<String> supplyName() {
return () -> "Christopher Pike";
}The name of the source output is defined in application.properties
spring.cloud.stream.function.bindings.supplyName-out-0=processorinput
When using this application in conjunction with the Processor sample application, the name used for the output of the Source should match the name of the input for the Processor. This is already setup for both applications.
=== Multiple Functions in one applicaiton
More than one Java 8 Function can exist in a single application.
If you would like to add the Processor and Sink to the same application as the source, use the following Spring CLI commands.
spring cli add scs-processor
and
spring cli add scs-sink