anchor.diff:  
   For Spring Cloud Stream samples, please refer to the https://github.com/spring-cloud/spring-cloud-stream-samples[spring-cloud-stream-samples] repository on GitHub.
   
  -== Getting Started
  -
  -To get started with creating Spring Cloud Stream applications, visit the https://start.spring.io[Spring Initializr] and create a new Maven project named "GreetingSource".
  -Select Spring Boot {supported-spring-boot-version} in the dropdown.
  -In the _Search for dependencies_ text box type `Stream Rabbit` or `Stream Kafka` depending on what binder you want to use.
  -
  -Next, create a new class, `GreetingSource`, in the same package as the `GreetingSourceApplication` class.
  -Give it the following code:
  -
  -[source,java]
  -----
  -import org.springframework.cloud.stream.annotation.EnableBinding;
  -import org.springframework.cloud.stream.messaging.Source;
  -import org.springframework.integration.annotation.InboundChannelAdapter;
  -
  -@EnableBinding(Source.class)
  -public class GreetingSource {
  -
  -    @InboundChannelAdapter(Source.OUTPUT)
  -    public String greet() {
  -        return "hello world " + System.currentTimeMillis();
  -    }
  -}
  -----
  -
  -The `@EnableBinding` annotation is what triggers the creation of Spring Integration infrastructure components.
  -Specifically, it will create a Kafka connection factory, a Kafka outbound channel adapter, and the message channel defined inside the Source interface:
  -
  -[source,java]
  -----
  -public interface Source {
  -
  -  String OUTPUT = "output";
  -
  -  @Output(Source.OUTPUT)
  -  MessageChannel output();
  -
  -}
  -----
  -
  -The auto-configuration also creates a default poller, so that the `greet()` method will be invoked once per second.
  -The standard Spring Integration `@InboundChannelAdapter` annotation sends a message to the source's output channel, using the return value as the payload of the message.
  -
  -To test-drive this setup, run a Kafka message broker.
  -An easy way to do this is to use a Docker image:
  -
  -[source]
  -----
  -# On OS X
  -$ docker run -p 2181:2181 -p 9092:9092 --env ADVERTISED_HOST=`docker-machine ip \`docker-machine active\`` --env ADVERTISED_PORT=9092 spotify/kafka
  -
  -# On Linux
  -$ docker run -p 2181:2181 -p 9092:9092 --env ADVERTISED_HOST=localhost --env ADVERTISED_PORT=9092 spotify/kafka
  -----
  -
  -Build the application:
  -
  -----
  -./mvnw clean package
  -----
  -
  -The consumer application is coded in a similar manner.
  -Go back to Initializr and create another project, named LoggingSink.
  -Then create a new class, `LoggingSink`, in the same package as the class `LoggingSinkApplication` and with the following code:
  -
  -[source,java]
  -----
  -import org.springframework.cloud.stream.annotation.EnableBinding;
  -import org.springframework.cloud.stream.annotation.StreamListener;
  -import org.springframework.cloud.stream.messaging.Sink;
  -
  -@EnableBinding(Sink.class)
  -public class LoggingSink {
  -
  -    @StreamListener(Sink.INPUT)
  -    public void log(String message) {
  -        System.out.println(message);
  -    }
  -}
  -----
  -
  -Build the application:
  -
  -----
  -./mvnw clean package
  -----
  -
  -To connect the GreetingSource application to the LoggingSink application, each application must share the same destination name.
  -Starting up both applications as shown below, you will see the consumer application printing "hello world" and a timestamp to the console:
  -
  -[source]
  -----
  -cd GreetingSource
  -java -jar target/GreetingSource-0.0.1-SNAPSHOT.jar --spring.cloud.stream.bindings.output.destination=mydest
  -
  -cd LoggingSink
  -java -jar target/LoggingSink-0.0.1-SNAPSHOT.jar --server.port=8090 --spring.cloud.stream.bindings.input.destination=mydest
  -----
  -
  -(The different server port prevents collisions of the HTTP port used to service the Spring Boot Actuator endpoints in the two applications.)
  -
  -The output of the LoggingSink application will look something like the following:
  -
  -[source]
  -----
  -[           main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8090 (http)
  -[           main] com.example.LoggingSinkApplication       : Started LoggingSinkApplication in 6.828 seconds (JVM running for 7.371)
  -hello world 1458595076731
  -hello world 1458595077732
  -hello world 1458595078733
  -hello world 1458595079734
  -hello world 1458595080735
  -----
  -
   === Deploying Stream applications on CloudFoundry
   
   On CloudFoundry services are usually exposed via a special environment variable called https://docs.cloudfoundry.org/devguide/deploy-apps/environment-variable.html#VCAP-SERVICES[VCAP_SERVICES].
  
positive.code: }
  ----
  
  Once the 'namespace' is set for the individual applications, the application properties with the `namespace` as prefix can be passed to the aggregate application using any supported property source (commandline, environment properties etc.).
  
  For instance, to override the default `fixedDelay` and `debug` properties of 'source' and 'sink' applications:
  
  
negative.code: 
  ==== New Actuator Binding controls
  There are now new new Actuator binding controls to bothe visulaize as well as control Bindings lifecycle. By simply enabling actuator 
  endpoints (e.g., --management.endpoints.web.exposure.include=*) one can now visualize bindings by simply accessing the following URL:
  ----
  http://<host>:<port>/actuator/bindings
  ----
  
  One can also _stop, start, pause_ and _resume_ bindings by posting to the following URL:
  ----
  curl -H "Content-Type: application/json" -X POST http://<host>:<port>/actuator/bindings/start/inOne
  ----
  where 'inOne' is the name of the binding and 'start' is the operation to be performed.
  
  NOTE: _pause_ and _resume_ are only effective if corresponding binder and its underlyig technology supports it. Currently only Kafka binders support _pause_ and _resume_.
  
  ==== Configurable RetryTemplate
  