anchor.diff:  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::SCSt-partitioning.png[width=300,scaledwidth="50%"]
  +image::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.
  
positive.code: This can be seen in the following figure, which shows a typical deployment for a set of interacting Spring Cloud Stream applications.
  
  .Spring Cloud Stream Publish-Subscribe
  image::SCSt-sensors.png[width=300,scaledwidth="50%"]
  
  Data reported by sensors to an HTTP endpoint is sent to a common destination named `raw-sensor-data`.
  From the destination, it is independently processed by a microservice application that computes time-windowed averages and by another microservice application that ingests the raw data into HDFS (Hadoop Distributed File System).
  
negative.code: </dependency>
  ----
  
  NOTE: To run Spring Cloud Stream 2.0 apps in Cloud Foundry, you must add `spring-boot-starter-web` and `spring-boot-starter-actuator` to the classpath. Otherwise, the
  application will not start due to health check failures.
  
  You must also enable the `bindings` actuator endpoints by setting the following property: `--management.endpoints.web.exposure.include=bindings`.
  
  Once those prerequisites are satisfied. you should see the following in the logs when application start:
  