anchor.diff:  The following image shows the general relationship of producers and consumers:
   
   .Producers and Consumers
  -image::producers-consumers.png[width=300,scaledwidth="75%"]
  +image::producers-consumers.png[width=800,scaledwidth="75%",align="center"]
   
   A producer is any component that sends messages to a channel.
   The channel can be bound to an external message broker with a `Binder` implementation for that broker.
  
positive.code: Once it has found the correct schema of the incoming message, it retrieves the reader schema and, by using Avro's schema resolution support, reads it into the reader definition (setting defaults and any missing properties).
  
  .Schema Reading Resolution Process
  image::schema_reading.png[width=300,scaledwidth="75%",align="center"]
  
  NOTE: You should understand the difference between a writer schema (the application that wrote the message) and a reader schema (the receiving application).
  We suggest taking a moment to read https://avro.apache.org/docs/1.7.6/spec.html[the Avro terminology] and understand the process.
  
negative.code: For the consumers shown in the following figure, this property would be set as `spring.cloud.stream.bindings.<channelName>.group=hdfsWrite` or `spring.cloud.stream.bindings.<channelName>.group=average`.
  
  .Spring Cloud Stream Consumer Groups
  image::SCSt-groups.png[width=800,scaledwidth="75%",align="center"]
  
  All groups that subscribe to a given destination receive a copy of published data, but only one member of each group receives a given message from that destination.
  By default, when a group is not specified, Spring Cloud Stream assigns the application to an anonymous and independent single-member consumer group that is in a publish-subscribe relationship with all other consumer groups.
  