anchor.diff:  [[arch-streaming-functional-programming]]
   === Functional Programming Model
   
  -However, Spring Cloud Stream can support other programming styles.  There is initial support for functional style programming via link:http://docs.spring.io/spring-cloud-stream/docs/1.0.2.RELEASE/reference/htmlsingle/index.html#_rxjava_support[RxJava Observable APIs] and upcoming versions will support callback methods with Project Reactor’s Flux API and Apache Kafka’s KStream API.  
  +However, Spring Cloud Stream can support other programming styles.  There is initial support for functional style programming via link:http://docs.spring.io/spring-cloud-stream/docs/1.0.2.RELEASE/reference/htmlsingle/index.html#_rxjava_support[RxJava Observable APIs] and upcoming versions will support callback methods with Project Reactor’s Flux API and Apache Kafka’s KStream API.
   
   [[arch-streams]]
   == Streams
  
positive.code: [[arch-streams-delivery]]
  === Message Delivery Guarantees
  
  For consumer applications, there is a retry policy for exceptions generated during message handling.  The default is to retry the callback method invocation 3 times and wait one second for the first retry.  A backoff multiplier of 2 is used for the second and third attempts.  All of these retry properties are configurable.  
  
  If there is still an exception on the last retry attempt, and dead letter queues are enabled, the message and exception message are published to the dead letter queue.  The dead letter queue is a destination and its nature depends on the messaging middleware (e.g in the case of Kafka it is a dedicated topic).  If dead letter functionality is not enabled, the message and exception is sent to the error channel, which by default logs the message and exception.
  
  
negative.code: * Spring Boot uber-jar that is hosted in a maven repository, file, http or any other Spring resource implementation.
  * Docker
  
  The runtime is the place where applications execute.  The target runtimes for applications are platforms that you may already be using for other application deployments.
  
  The supported runtimes are
  
  