anchor.diff:  There are two types of application-level error handling. Errors can be handled at each binding subscription or a global handler can handle all the binding subscription errors. Let's review the details.
   
   .A Spring Cloud Stream Sink Application with Custom and Global Error Handlers
  -image::custom_vs_global_error_channels.png[width=800,scaledwidth="75%",align="center"]
  +image::{github-raw}/docs/src/main/asciidoc/images/custom_vs_global_error_channels.png[width=800,scaledwidth="75%",align="center"]
   
   For each input binding, Spring Cloud Stream creates a dedicated error channel with the following semantics `<destinationName>.errors`.
   
  
positive.code: * *Destination Bindings:* Bridge between the external messaging systems and application provided _Producers_ and _Consumers_ of messages (created by the Destination Binders).
  * *Message:* The canonical data structure used by producers and consumers to communicate with Destination Binders (and thus other applications via external messaging systems).
  
  image::SCSt-overview.png[width=800,scaledwidth="75%",align="center"]
  
  === Destination Binders
  
  
negative.code: Partitioning can thus be used whether the broker itself is naturally partitioned (for example, Kafka) or not (for example, RabbitMQ).
  
  .Spring Cloud Stream Partitioning
  image::{github-raw}/docs/src/main/asciidoc/images/SCSt-partitioning.png[width=800,scaledwidth="75%",align="center"]
  
  Partitioning is a critical concept in stateful processing, where it is critical (for either performance or consistency reasons) to ensure that all related data is processed together.
  For example, in the time-windowed average calculation example, it is important that all measurements from any given sensor are processed by the same application instance.
  