...
|
If you are new to Camel you might want to try the [Getting Started] in the [User Guide] before attempting to implement these patterns.
|
The EIP icons library is available as a Visio stencil file adapted to render the icons with the Camel color : sand. Download it [here|http://cwiki.apache.org/CAMEL/enterprise-integration-patterns.data/Hohpe_EIP_camel.zip] for your presentation, functional and technical analysis documents. The original EIP stencil is also available in [OpenOffice 3.x Draw|^Hohpe_EIP_camel_OpenOffice.zip] (thanks to Marco Garbelini) , [Microsoft Visio|http://www.enterpriseintegrationpatterns.com/download/EIP_Visio_stencil.zip], Visio|http://www.eaipatterns.com/download/EIP_Visio_stencil.zip], or [Omnigraffle|http://www.graffletopia.com/stencils/137].
|
{excerpt} h3. Messaging Systems
|
| !http://www.enterpriseintegrationpatterns.com/img/ChannelIcon.gif! !http://www.eaipatterns.com/img/ChannelIcon.gif! | [Message Channel] | How does one application communicate with another using messaging? |
|
| !http://www.enterpriseintegrationpatterns.com/img/MessageIcon.gif! !http://www.eaipatterns.com/img/MessageIcon.gif! | [Message] | How can two applications connected by a message channel exchange a piece of information? |
|
| !http://www.enterpriseintegrationpatterns.com/img/PipesAndFiltersIcon.gif! !http://www.eaipatterns.com/img/PipesAndFiltersIcon.gif! | [Pipes and Filters] | How can we perform complex processing on a message while maintaining independence and flexibility? |
|
| !http://www.enterpriseintegrationpatterns.com/img/ContentBasedRouterIcon.gif! !http://www.eaipatterns.com/img/ContentBasedRouterIcon.gif! | [Message Router] | How can you decouple individual processing steps so that messages can be passed to different filters depending on a set of conditions? |
|
| !http://www.enterpriseintegrationpatterns.com/img/MessageTranslatorIcon.gif! !http://www.eaipatterns.com/img/MessageTranslatorIcon.gif! | [Message Translator] | How can systems using different data formats communicate with each other using messaging? |
|
| !http://www.enterpriseintegrationpatterns.com/img/MessageEndpointIcon.gif! !http://www.eaipatterns.com/img/MessageEndpointIcon.gif! | [Message Endpoint] | How does an application connect to a messaging channel to send and receive messages? |
|
h3. Messaging Channels
|
| !http://www.enterpriseintegrationpatterns.com/img/PointToPointIcon.gif! !http://www.eaipatterns.com/img/PointToPointIcon.gif! | [Point to Point Channel] | How can the caller be sure that exactly one receiver will receive the document or perform the call? |
|
| !http://www.enterpriseintegrationpatterns.com/img/PublishSubscribeIcon.gif! !http://www.eaipatterns.com/img/PublishSubscribeIcon.gif! | [Publish Subscribe Channel] | How can the sender broadcast an event to all interested receivers? |
|
| !http://www.enterpriseintegrationpatterns.com/img/DeadLetterChannelIcon.gif! !http://www.eaipatterns.com/img/DeadLetterChannelIcon.gif! | [Dead Letter Channel] | What will the messaging system do with a message it cannot deliver? |
|
| !http://www.enterpriseintegrationpatterns.com/img/GuaranteedMessagingIcon.gif! !http://www.eaipatterns.com/img/GuaranteedMessagingIcon.gif! | [Guaranteed Delivery] | How can the sender make sure that a message will be delivered, even if the messaging system fails? |
|
| !http://www.enterpriseintegrationpatterns.com/img/MessageBusIcon.gif! !http://www.eaipatterns.com/img/MessageBusIcon.gif! | [Message Bus] | What is an architecture that enables separate applications to work together, but in a de-coupled fashion such that applications can be easily added or removed without affecting the others? |
|
h3. Message Construction
|
| !http://www.enterpriseintegrationpatterns.com/img/EventMessageIcon.gif! !http://www.eaipatterns.com/img/EventMessageIcon.gif! | [Event Message] | How can messaging be used to transmit events from one application to another? |
|
| !http://www.enterpriseintegrationpatterns.com/img/RequestReplyIcon.gif! !http://www.eaipatterns.com/img/RequestReplyIcon.gif! | [Request Reply] | When an application sends a message, how can it get a response from the receiver? |
|
| !http://www.enterpriseintegrationpatterns.com/img/CorrelationIdentifierIcon.gif! !http://www.eaipatterns.com/img/CorrelationIdentifierIcon.gif! | [Correlation Identifier] | How does a requestor that has received a reply know which request this is the reply for? |
|
| !http://www.enterpriseintegrationpatterns.com/img/ReturnAddressIcon.gif! !http://www.eaipatterns.com/img/ReturnAddressIcon.gif! | [Return Address] | How does a replier know where to send the reply? |
|
h3. Message Routing
|
| !http://www.enterpriseintegrationpatterns.com/img/ContentBasedRouterIcon.gif! !http://www.eaipatterns.com/img/ContentBasedRouterIcon.gif! | [Content Based Router] | How do we handle a situation where the implementation of a single logical function (e.g., inventory check) is spread across multiple physical systems? |
|
| !http://www.enterpriseintegrationpatterns.com/img/MessageFilterIcon.gif! !http://www.eaipatterns.com/img/MessageFilterIcon.gif! | [Message Filter] | How can a component avoid receiving uninteresting messages? |
|
| !http://www.enterpriseintegrationpatterns.com/img/DynamicRouterIcon.gif! !http://www.eaipatterns.com/img/DynamicRouterIcon.gif! | [Dynamic Router] | How can you avoid the dependency of the router on all possible destinations while maintaining its efficiency? |
|
| !http://www.enterpriseintegrationpatterns.com/img/RecipientListIcon.gif! !http://www.eaipatterns.com/img/RecipientListIcon.gif! | [Recipient List] | How do we route a message to a list of (static or dynamically) specified recipients? |
|
| !http://www.enterpriseintegrationpatterns.com/img/SplitterIcon.gif! !http://www.eaipatterns.com/img/SplitterIcon.gif! | [Splitter] | How can we process a message if it contains multiple elements, each of which may have to be processed in a different way? |
|
| !http://www.enterpriseintegrationpatterns.com/img/AggregatorIcon.gif! !http://www.eaipatterns.com/img/AggregatorIcon.gif! | [Aggregator|Aggregator2] | How do we combine the results of individual, but related messages so that they can be processed as a whole? |
|
| !http://www.enterpriseintegrationpatterns.com/img/ResequencerIcon.gif! !http://www.eaipatterns.com/img/ResequencerIcon.gif! | [Resequencer] | How can we get a stream of related but out-of-sequence messages back into the correct order? |
|
| !http://www.enterpriseintegrationpatterns.com/img/DistributionAggregateIcon.gif! !http://www.eaipatterns.com/img/DistributionAggregateIcon.gif! | [Composed Message Processor] | How can you maintain the overall message flow when processing a message consisting of multiple elements, each of which may require different processing? |
|
| !http://cwiki.apache.org/confluence/download/attachments/49204/clear.png! | [Scatter-Gather] | How do you maintain the overall message flow when a message needs to be sent to multiple recipients, each of which may send a reply? |
|
| !http://www.enterpriseintegrationpatterns.com/img/RoutingTableIcon.gif! !http://www.eaipatterns.com/img/RoutingTableIcon.gif! | [Routing Slip] | How do we route a message consecutively through a series of processing steps when the sequence of steps is not known at design-time and may vary for each message? |
|
| !http://cwiki.apache.org/confluence/download/attachments/49204/clear.png! | [Throttler] | How can I throttle messages to ensure that a specific endpoint does not get overloaded, or we don't exceed an agreed SLA with some external service? | | !http://cwiki.apache.org/confluence/download/attachments/49204/clear.png! | [Sampling] | How can I sample one message out of many in a given period to avoid downstream route does not get overloaded? |
|
...
|
h3. Message Transformation
|
| !http://www.enterpriseintegrationpatterns.com/img/DataEnricherIcon.gif! !http://www.eaipatterns.com/img/DataEnricherIcon.gif! | [Content Enricher] | How do we communicate with another system if the message originator does not have all the required data items available? |
|
| !http://www.enterpriseintegrationpatterns.com/img/ContentFilterIcon.gif! !http://www.eaipatterns.com/img/ContentFilterIcon.gif! | [Content Filter] | How do you simplify dealing with a large message, when you are interested only in a few data items? |
|
| !http://www.enterpriseintegrationpatterns.com/img/StoreInLibraryIcon.gif! !http://www.eaipatterns.com/img/StoreInLibraryIcon.gif! | [Claim Check] | How can we reduce the data volume of message sent across the system without sacrificing information content? |
|
| !http://www.enterpriseintegrationpatterns.com/img/NormalizerIcon.gif! !http://www.eaipatterns.com/img/NormalizerIcon.gif! | [Normalizer] | How do you process messages that are semantically equivalent, but arrive in a different format? |
|
| !http://cwiki.apache.org/confluence/download/attachments/49204/clear.png! | [Sort] | How can I sort the body of a message? | | !http://cwiki.apache.org/confluence/download/attachments/49204/clear.png! | [Validate] | How can I validate a message? |
|
...
|
| !http://cwiki.apache.org/confluence/download/attachments/49204/clear.png! | [Messaging Mapper] | How do you move data between domain objects and the messaging infrastructure while keeping the two independent of each other? |
|
| !http://www.enterpriseintegrationpatterns.com/img/EventDrivenConsumerIcon.gif! !http://www.eaipatterns.com/img/EventDrivenConsumerIcon.gif! | [Event Driven Consumer] | How can an application automatically consume messages as they become available? |
|
| !http://www.enterpriseintegrationpatterns.com/img/PollingConsumerIcon.gif! !http://www.eaipatterns.com/img/PollingConsumerIcon.gif! | [Polling Consumer] | How can an application consume a message when the application is ready? |
|
| !http://www.enterpriseintegrationpatterns.com/img/CompetingConsumersIcon.gif! !http://www.eaipatterns.com/img/CompetingConsumersIcon.gif! | [Competing Consumers] | How can a messaging client process multiple messages concurrently? |
|
| !http://www.enterpriseintegrationpatterns.com/img/MessageDispatcherIcon.gif! !http://www.eaipatterns.com/img/MessageDispatcherIcon.gif! | [Message Dispatcher] | How can multiple consumers on a single channel coordinate their message processing? |
|
| !http://www.enterpriseintegrationpatterns.com/img/MessageSelectorIcon.gif! !http://www.eaipatterns.com/img/MessageSelectorIcon.gif! | [Selective Consumer] | How can a message consumer select which messages it wishes to receive? |
|
| !http://www.enterpriseintegrationpatterns.com/img/DurableSubscriptionIcon.gif! !http://www.eaipatterns.com/img/DurableSubscriptionIcon.gif! | [Durable Subscriber] | How can a subscriber avoid missing messages while it's not listening for them? |
|
| !http://cwiki.apache.org/confluence/download/attachments/49204/clear.png! | [Idempotent Consumer] | How can a message receiver deal with duplicate messages? |
|
| !http://www.enterpriseintegrationpatterns.com/img/TransactionalClientIcon.gif! !http://www.eaipatterns.com/img/TransactionalClientIcon.gif! | [Transactional Client] | How can a client control its transactions with the messaging system? |
|
| !http://www.enterpriseintegrationpatterns.com/img/MessagingGatewayIcon.gif! !http://www.eaipatterns.com/img/MessagingGatewayIcon.gif! | [Messaging Gateway] | How do you encapsulate access to the messaging system from the rest of the application? |
|
| !http://www.enterpriseintegrationpatterns.com/img/MessagingAdapterIcon.gif! !http://www.eaipatterns.com/img/MessagingAdapterIcon.gif! | [Service Activator] | How can an application design a service to be invoked both via various messaging technologies and via non-messaging techniques? |
|
h3. System Management
|
| !http://www.enterpriseintegrationpatterns.com/img/DetourIcon.gif! !http://www.eaipatterns.com/img/DetourIcon.gif! | [Detour] | How can you route a message through intermediate steps to perform validation, testing or debugging functions? |
|
| !http://www.enterpriseintegrationpatterns.com/img/WireTapIcon.gif! !http://www.eaipatterns.com/img/WireTapIcon.gif! | [Wire Tap] | How do you inspect messages that travel on a point-to-point channel? |
|
| !http://cwiki.apache.org/confluence/download/attachments/49204/clear.png! | [Log|LogEIP] | How can I log processing a message? |
|
...
|