anchor.diff:  a|image::eip/MessageEndpointIcon.gif[image]
   |xref:message-endpoint.adoc[Message Endpoint] |How does an application
   connect to a messaging channel to send and receive messages?
  -|=======================================================================
  +|===
   
   == Messaging Channels
   
   [width="100%",cols="10%,10%,80%",]
  -|=======================================================================
  +|===
   a|image::eip/PointToPointIcon.gif[image]
   |xref:point-to-point-channel.adoc[Point to Point Channel] |How can the
   caller be sure that exactly one receiver will receive the document or
  
positive.code: |xref:message-expiration.adoc[Message Expiration] |How can a sender indicate
  when a message should be considered stale and thus shouldn’t be processed?
  
  |=======================================================================
  
  == Message Routing
  
  [width="100%",cols="10%,10%,80%",]
  |=======================================================================
  a|image::eip/ContentBasedRouterIcon.gif[image]
  |xref:choice-eip.adoc[Content Based Router] |How do we handle
  a situation where the implementation of a single logical function (e.g.,
  
negative.code: 
  a|image::eip/MessageSelectorIcon.gif[image]
  |xref:validate-eip.adoc[Validate] |How can I validate a message?
  |===
  
  == Messaging Endpoints
  
  [width="100%",cols="10%,10%,80%",]
  |===
  
  a|image::eip/MessageTranslatorIcon.gif[image]
  |xref:messaging-mapper.adoc[Messaging Mapper] |How do you move data
  