anchor.diff:  [width="100%",cols="10%,10%,80%",]
   |=======================================================================
   a|image::eip/ChannelIcon.gif[image]
  -|Message Channel |How does one application
  +|xref:message-channel.adoc[Message Channel] |How does one application
   communicate with another using messaging?
   
   a|image::eip/MessageIcon.gif[image]
  -|Message |How can two applications connected by a
  +|xref:message.adoc[Message] |How can two applications connected by a
   message channel exchange a piece of information?
   
   a|image::eip/PipesAndFiltersIcon.gif[image]
  -|Pipes and Filters |How can we perform
  +|xref:pipeline-eip.adoc[Pipes and Filters |How can we perform
   complex processing on a message while maintaining independence and
   flexibility?
   
   a|image::eip/ContentBasedRouterIcon.gif[image]
  -|Message Router |How can you decouple
  +|xref:message-router.adoc[Message Router] |How can you decouple
   individual processing steps so that messages can be passed to different
   filters depending on a set of conditions?
   
   a|image::eip/MessageTranslatorIcon.gif[image]
  -|Message Translator |How can systems using
  +|xref:message-translator.adoc[Message Translator] |How can systems using
   different data formats communicate with each other using messaging?
   
   a|image::eip/MessageEndpointIcon.gif[image]
  -|Message Endpoint |How does an application
  +|xref:message-endpoint.adoc[Message Endpoint] |How does an application
   connect to a messaging channel to send and receive messages?
   |=======================================================================
   
  
positive.code: the two independent of each other?
  
  a|image::eip/EventDrivenConsumerIcon.gif[image]
  |Event Driven Consumer |How can an
  application automatically consume messages as they become available?
  
  a|image::eip/PollingConsumerIcon.gif[image]
  |Polling Consumer |How can an application
  consume a message when the application is ready?
  
  a|image::eip/CompetingConsumersIcon.gif[image]
  
negative.code: [width="100%",cols="10%,10%,80%",]
  |=======================================================================
  a|image::eip/EventMessageIcon.gif[image]
  |xref:event-message.adoc[Event Message] |How can messaging be used to
  transmit events from one application to another?
  
  a|image::eip/RequestReplyIcon.gif[image]
  |xref:requestReply-eip.adoc[Request Reply] |When an application sends a
  message, how can it get a response from the receiver?
  
  a|image::eip/CorrelationIdentifierIcon.gif[image]
  |xref:correlation-identifier.adoc[Correlation Identifier] |How does a
  requestor that has received a reply know which request this is the reply
  for?
  
  a|image::eip/ReturnAddressIcon.gif[image]
  |xref:return-address.adoc[Return Address] |How does a replier know where
  to send the reply?
  |=======================================================================
  
  