Author: buildbot
Date: Thu Oct 6 15:21:23 2016
New Revision: 998968
Log:
Production update by buildbot for camel
Modified:
websites/production/camel/content/book-in-one-page.html
websites/production/camel/content/book-pattern-appendix.html
websites/production/camel/content/cache/main.pageCache
websites/production/camel/content/load-balancer.html
Modified: websites/production/camel/content/book-in-one-page.html
==============================================================================
--- websites/production/camel/content/book-in-one-page.html (original)
+++ websites/production/camel/content/book-in-one-page.html Thu Oct 6 15:21:23
2016
@@ -1551,9 +1551,9 @@ However, there is another option that th
</div><h3 id="BookInOnePage-MessageConstruction">Message Construction</h3><div
class="table-wrap">
<table class="confluenceTable"><tbody><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p><span class="confluence-embedded-file-wrapper"><img
class="confluence-embedded-image confluence-external-resource"
src="http://www.eaipatterns.com/img/EventMessageIcon.gif"
data-image-src="http://www.eaipatterns.com/img/EventMessageIcon.gif"></span></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect"
href="event-message.html">Event Message</a></p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>How can messaging be used to transmit events from one
application to another?</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p><span class="confluence-embedded-file-wrapper"><img
class="confluence-embedded-image confluence-external-resource"
src="http://www.eaipatterns.com/img/RequestReplyIcon.gif"
data-image-src="http://www.eaipatterns.com/img/RequestReplyIcon.gif"></span></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect"
href="request-reply.html">Request Reply</a></p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>When an application sends a message, how
can it get a response from the receiver?</p></td></tr><tr><td colspan="1"
rowspan="1" class="confluenceTd"><p><span
class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image
confluence-external-resource"
src="http://www.eaipatterns.com/img/CorrelationIdentifierIcon.gif"
data-image-src="http://www.eaipatterns.com/img/CorrelationIdentifierIcon.gif"></span></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect"
href="correlation-identifier.html">Correlation Identifier</a></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>How does a requestor that has
received a reply know which request this is the reply for?</p></td></tr><tr><td
colspan="1" rowspan="1" class="confluenceTd"><p><span
class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image
confluence-external-resource" sr
c="http://www.eaipatterns.com/img/ReturnAddressIcon.gif"
data-image-src="http://www.eaipatterns.com/img/ReturnAddressIcon.gif"></span></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect"
href="return-address.html">Return Address</a></p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>How does a replier know where to send the
reply?</p></td></tr></tbody></table>
</div><h3 id="BookInOnePage-MessageRouting">Message Routing</h3><div
class="table-wrap">
- <table class="confluenceTable"><tbody><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p><span class="confluence-embedded-file-wrapper"><img
class="confluence-embedded-image confluence-external-resource"
src="http://www.eaipatterns.com/img/ContentBasedRouterIcon.gif"
data-image-src="http://www.eaipatterns.com/img/ContentBasedRouterIcon.gif"></span></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect"
href="content-based-router.html">Content Based Router</a></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>How do we handle a situation
where the implementation of a single logical function (e.g., inventory check)
is spread across multiple physical systems?</p></td></tr><tr><td colspan="1"
rowspan="1" class="confluenceTd"><p><span
class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image
confluence-external-resource"
src="http://www.eaipatterns.com/img/MessageFilterIcon.gif"
data-image-src="http://www.eaipatterns.com/img/Messa
geFilterIcon.gif"></span></p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p><a shape="rect" href="message-filter.html">Message
Filter</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>How can
a component avoid receiving uninteresting messages?</p></td></tr><tr><td
colspan="1" rowspan="1" class="confluenceTd"><p><span
class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image
confluence-external-resource"
src="http://www.eaipatterns.com/img/DynamicRouterIcon.gif"
data-image-src="http://www.eaipatterns.com/img/DynamicRouterIcon.gif"></span></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect"
href="dynamic-router.html">Dynamic Router</a></p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>How can you avoid the dependency of the
router on all possible destinations while maintaining its
efficiency?</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p><span class="confluence-embedded-file-wrapper">
<img class="confluence-embedded-image confluence-external-resource"
src="http://www.eaipatterns.com/img/RecipientListIcon.gif"
data-image-src="http://www.eaipatterns.com/img/RecipientListIcon.gif"></span></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect"
href="recipient-list.html">Recipient List</a></p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>How do we route a message to a list of
(static or dynamically) specified recipients?</p></td></tr><tr><td colspan="1"
rowspan="1" class="confluenceTd"><p><span
class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image
confluence-external-resource"
src="http://www.eaipatterns.com/img/SplitterIcon.gif"
data-image-src="http://www.eaipatterns.com/img/SplitterIcon.gif"></span></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect"
href="splitter.html">Splitter</a></p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>How can we process a message if it contains
multiple elements, each of which may have to be processed in a different
way?</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><span
class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image
confluence-external-resource"
src="http://www.eaipatterns.com/img/AggregatorIcon.gif"
data-image-src="http://www.eaipatterns.com/img/AggregatorIcon.gif"></span></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect"
href="aggregator2.html">Aggregator</a></p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>How do we combine the results of individual, but
related messages so that they can be processed as a whole?</p></td></tr><tr><td
colspan="1" rowspan="1" class="confluenceTd"><p><span
class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image
confluence-external-resource"
src="http://www.eaipatterns.com/img/ResequencerIcon.gif"
data-image-src="http://www.eaipatterns.com/img/ResequencerIcon.gif"></span></p><
/td><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect"
href="resequencer.html">Resequencer</a></p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>How can we get a stream of related but out-of-sequence
messages back into the correct order?</p></td></tr><tr><td colspan="1"
rowspan="1" class="confluenceTd"><p><span
class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image
confluence-external-resource"
src="http://www.eaipatterns.com/img/DistributionAggregateIcon.gif"
data-image-src="http://www.eaipatterns.com/img/DistributionAggregateIcon.gif"></span></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect"
href="composed-message-processor.html">Composed Message
Processor</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>How
can you maintain the overall message flow when processing a message consisting
of multiple elements, each of which may require different
processing?</p></td></tr><tr><td colspan="1" row
span="1" class="confluenceTd"><p><span
class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image
confluence-external-resource"
src="http://cwiki.apache.org/confluence/download/attachments/49204/clear.png"
data-image-src="http://cwiki.apache.org/confluence/download/attachments/49204/clear.png"></span></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect"
href="scatter-gather.html">Scatter-Gather</a></p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>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?</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p><span class="confluence-embedded-file-wrapper"><img
class="confluence-embedded-image confluence-external-resource"
src="http://www.eaipatterns.com/img/RoutingTableIcon.gif"
data-image-src="http://www.eaipatterns.com/img/RoutingTableIcon.gif"></span></p></td><td
colspan="1" rowspan="1" clas
s="confluenceTd"><p><a shape="rect" href="routing-slip.html">Routing
Slip</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>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?</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p><span class="confluence-embedded-file-wrapper"><img
class="confluence-embedded-image confluence-external-resource"
src="http://cwiki.apache.org/confluence/download/attachments/49204/clear.png"
data-image-src="http://cwiki.apache.org/confluence/download/attachments/49204/clear.png"></span></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect"
href="throttler.html">Throttler</a></p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>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?</p></td></tr><tr
><td colspan="1" rowspan="1" class="confluenceTd"><p><span
>class="confluence-embedded-file-wrapper"><img
>class="confluence-embedded-image confluence-external-resource"
>src="http://cwiki.apache.org/confluence/download/attachments/49204/clear.png"
>data-image-src="http://cwiki.apache.org/confluence/download/attachments/49204/clear.png"></span></p></td><td
> colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect"
>href="sampling.html">Sampling</a></p></td><td colspan="1" rowspan="1"
>class="confluenceTd"><p>How can I sample one message out of many in a given
>period to avoid downstream route does not get
>overloaded?</p></td></tr><tr><td colspan="1" rowspan="1"
>class="confluenceTd"><p><span class="confluence-embedded-file-wrapper"><img
>class="confluence-embedded-image confluence-external-resource"
>src="http://cwiki.apache.org/confluence/download/attachments/49204/clear.png"
>data-image-src="http://cwiki.apache.org/confluence/download/attachments/49204/clear.png"></span></p></td><td
> col
span="1" rowspan="1" class="confluenceTd"><p><a shape="rect"
href="delayer.html">Delayer</a></p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>How can I delay the sending of a
message?</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p><span class="confluence-embedded-file-wrapper"><img
class="confluence-embedded-image confluence-external-resource"
src="http://cwiki.apache.org/confluence/download/attachments/49204/clear.png"
data-image-src="http://cwiki.apache.org/confluence/download/attachments/49204/clear.png"></span></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect"
href="load-balancer.html">Load Balancer</a></p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>How can I balance load across a number of
endpoints?</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"><a shape="rect"
href="hystrix-eip.html">Hystrix</a></td><td colspan="1" rowspan="1"
class="confluenceTd">To use Hystrix Circuit Breaker when calling an external
service.</td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"><a shape="rect" href="servicecall-eip.html">Service
Call</a></td><td colspan="1" rowspan="1" class="confluenceTd">To call a remote
service in a distributed system where the service is looked up from a service
registry of some sorts.</td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p><span class="confluence-embedded-file-wrapper"><img
class="confluence-embedded-image confluence-external-resource"
src="http://cwiki.apache.org/confluence/download/attachments/49204/clear.png"
data-image-src="http://cwiki.apache.org/confluence/download/attachments/49204/clear.png"></span></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect"
href="multicast.html">Multicast</a></p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>How can I route a message to
a number of endpoints at the same time?</p></td></tr><tr><td colspan="1"
rowspan="1" class="confluenceTd"><p><span
class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image
confluence-external-resource"
src="http://cwiki.apache.org/confluence/download/attachments/49204/clear.png"
data-image-src="http://cwiki.apache.org/confluence/download/attachments/49204/clear.png"></span></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect"
href="loop.html">Loop</a></p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>How can I repeat processing a message in a
loop?</p></td></tr></tbody></table>
+ <table class="confluenceTable"><tbody><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p><span class="confluence-embedded-file-wrapper"><img
class="confluence-embedded-image confluence-external-resource"
src="http://www.eaipatterns.com/img/ContentBasedRouterIcon.gif"
data-image-src="http://www.eaipatterns.com/img/ContentBasedRouterIcon.gif"></span></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect"
href="content-based-router.html">Content Based Router</a></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>How do we handle a situation
where the implementation of a single logical function (e.g., inventory check)
is spread across multiple physical systems?</p></td></tr><tr><td colspan="1"
rowspan="1" class="confluenceTd"><p><span
class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image
confluence-external-resource"
src="http://www.eaipatterns.com/img/MessageFilterIcon.gif"
data-image-src="http://www.eaipatterns.com/img/Messa
geFilterIcon.gif"></span></p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p><a shape="rect" href="message-filter.html">Message
Filter</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>How can
a component avoid receiving uninteresting messages?</p></td></tr><tr><td
colspan="1" rowspan="1" class="confluenceTd"><p><span
class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image
confluence-external-resource"
src="http://www.eaipatterns.com/img/DynamicRouterIcon.gif"
data-image-src="http://www.eaipatterns.com/img/DynamicRouterIcon.gif"></span></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect"
href="dynamic-router.html">Dynamic Router</a></p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>How can you avoid the dependency of the
router on all possible destinations while maintaining its
efficiency?</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p><span class="confluence-embedded-file-wrapper">
<img class="confluence-embedded-image confluence-external-resource"
src="http://www.eaipatterns.com/img/RecipientListIcon.gif"
data-image-src="http://www.eaipatterns.com/img/RecipientListIcon.gif"></span></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect"
href="recipient-list.html">Recipient List</a></p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>How do we route a message to a list of
(static or dynamically) specified recipients?</p></td></tr><tr><td colspan="1"
rowspan="1" class="confluenceTd"><p><span
class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image
confluence-external-resource"
src="http://www.eaipatterns.com/img/SplitterIcon.gif"
data-image-src="http://www.eaipatterns.com/img/SplitterIcon.gif"></span></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect"
href="splitter.html">Splitter</a></p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>How can we process a message if it contains
multiple elements, each of which may have to be processed in a different
way?</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><span
class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image
confluence-external-resource"
src="http://www.eaipatterns.com/img/AggregatorIcon.gif"
data-image-src="http://www.eaipatterns.com/img/AggregatorIcon.gif"></span></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect"
href="aggregator2.html">Aggregator</a></p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>How do we combine the results of individual, but
related messages so that they can be processed as a whole?</p></td></tr><tr><td
colspan="1" rowspan="1" class="confluenceTd"><p><span
class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image
confluence-external-resource"
src="http://www.eaipatterns.com/img/ResequencerIcon.gif"
data-image-src="http://www.eaipatterns.com/img/ResequencerIcon.gif"></span></p><
/td><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect"
href="resequencer.html">Resequencer</a></p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>How can we get a stream of related but out-of-sequence
messages back into the correct order?</p></td></tr><tr><td colspan="1"
rowspan="1" class="confluenceTd"><p><span
class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image
confluence-external-resource"
src="http://www.eaipatterns.com/img/DistributionAggregateIcon.gif"
data-image-src="http://www.eaipatterns.com/img/DistributionAggregateIcon.gif"></span></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect"
href="composed-message-processor.html">Composed Message
Processor</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>How
can you maintain the overall message flow when processing a message consisting
of multiple elements, each of which may require different
processing?</p></td></tr><tr><td colspan="1" row
span="1" class="confluenceTd"><p><span
class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image
confluence-external-resource"
src="http://cwiki.apache.org/confluence/download/attachments/49204/clear.png"
data-image-src="http://cwiki.apache.org/confluence/download/attachments/49204/clear.png"></span></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect"
href="scatter-gather.html">Scatter-Gather</a></p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>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?</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p><span class="confluence-embedded-file-wrapper"><img
class="confluence-embedded-image confluence-external-resource"
src="http://www.eaipatterns.com/img/RoutingTableIcon.gif"
data-image-src="http://www.eaipatterns.com/img/RoutingTableIcon.gif"></span></p></td><td
colspan="1" rowspan="1" clas
s="confluenceTd"><p><a shape="rect" href="routing-slip.html">Routing
Slip</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>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?</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p><span class="confluence-embedded-file-wrapper"><img
class="confluence-embedded-image confluence-external-resource"
src="http://cwiki.apache.org/confluence/download/attachments/49204/clear.png"
data-image-src="http://cwiki.apache.org/confluence/download/attachments/49204/clear.png"></span></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect"
href="throttler.html">Throttler</a></p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>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?</p></td></tr><tr
><td colspan="1" rowspan="1" class="confluenceTd"><p><span
>class="confluence-embedded-file-wrapper"><img
>class="confluence-embedded-image confluence-external-resource"
>src="http://cwiki.apache.org/confluence/download/attachments/49204/clear.png"
>data-image-src="http://cwiki.apache.org/confluence/download/attachments/49204/clear.png"></span></p></td><td
> colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect"
>href="sampling.html">Sampling</a></p></td><td colspan="1" rowspan="1"
>class="confluenceTd"><p>How can I sample one message out of many in a given
>period to avoid downstream route does not get
>overloaded?</p></td></tr><tr><td colspan="1" rowspan="1"
>class="confluenceTd"><p><span class="confluence-embedded-file-wrapper"><img
>class="confluence-embedded-image confluence-external-resource"
>src="http://cwiki.apache.org/confluence/download/attachments/49204/clear.png"
>data-image-src="http://cwiki.apache.org/confluence/download/attachments/49204/clear.png"></span></p></td><td
> col
span="1" rowspan="1" class="confluenceTd"><p><a shape="rect"
href="delayer.html">Delayer</a></p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>How can I delay the sending of a
message?</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p><span class="confluence-embedded-file-wrapper"><img
class="confluence-embedded-image confluence-external-resource"
src="http://cwiki.apache.org/confluence/download/attachments/49204/clear.png"
data-image-src="http://cwiki.apache.org/confluence/download/attachments/49204/clear.png"></span></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect"
href="load-balancer.html">Load Balancer</a></p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>How can I balance load across a number of
endpoints?</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"><p><a shape="rect"
href="hystrix-eip.html">Hystrix</a></p></td><td colspan="1" rowsp
an="1" class="confluenceTd"><p>To use Hystrix Circuit Breaker when calling an
external service.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"><p><a shape="rect" href="servicecall-eip.html">Service
Call</a></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>To call a
remote service in a distributed system where the service is looked up from a
service registry of some sorts.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p><span class="confluence-embedded-file-wrapper"><img
class="confluence-embedded-image confluence-external-resource"
src="http://cwiki.apache.org/confluence/download/attachments/49204/clear.png"
data-image-src="http://cwiki.apache.org/confluence/download/attachments/49204/clear.png"></span></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect"
href="multicast.html">Multicast</a></p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>H
ow can I route a message to a number of endpoints at the same
time?</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p><span class="confluence-embedded-file-wrapper"><img
class="confluence-embedded-image confluence-external-resource"
src="http://cwiki.apache.org/confluence/download/attachments/49204/clear.png"
data-image-src="http://cwiki.apache.org/confluence/download/attachments/49204/clear.png"></span></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect"
href="loop.html">Loop</a></p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>How can I repeat processing a message in a
loop?</p></td></tr></tbody></table>
</div><h3 id="BookInOnePage-MessageTransformation">Message
Transformation</h3><div class="table-wrap">
- <table class="confluenceTable"><tbody><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p><span class="confluence-embedded-file-wrapper"><img
class="confluence-embedded-image confluence-external-resource"
src="http://www.eaipatterns.com/img/DataEnricherIcon.gif"
data-image-src="http://www.eaipatterns.com/img/DataEnricherIcon.gif"></span></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect"
href="content-enricher.html">Content Enricher</a></p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>How do we communicate with another system
if the message originator does not have all the required data items
available?</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p><span class="confluence-embedded-file-wrapper"><img
class="confluence-embedded-image confluence-external-resource"
src="http://www.eaipatterns.com/img/ContentFilterIcon.gif"
data-image-src="http://www.eaipatterns.com/img/ContentFilterIcon.gif"></span></p></td><td
colspan="1"
rowspan="1" class="confluenceTd"><p><a shape="rect"
href="content-filter.html">Content Filter</a></p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>How do you simplify dealing with a large
message, when you are interested only in a few data items?</p></td></tr><tr><td
colspan="1" rowspan="1" class="confluenceTd"><p><span
class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image
confluence-external-resource"
src="http://www.eaipatterns.com/img/StoreInLibraryIcon.gif"
data-image-src="http://www.eaipatterns.com/img/StoreInLibraryIcon.gif"></span></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect"
href="claim-check.html">Claim Check</a></p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>How can we reduce the data volume of message sent
across the system without sacrificing information content?</p></td></tr><tr><td
colspan="1" rowspan="1" class="confluenceTd"><p><span
class="confluence-embedded-file-wrapper"><img class="con
fluence-embedded-image confluence-external-resource"
src="http://www.eaipatterns.com/img/NormalizerIcon.gif"
data-image-src="http://www.eaipatterns.com/img/NormalizerIcon.gif"></span></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect"
href="normalizer.html">Normalizer</a></p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>How do you process messages that are semantically
equivalent, but arrive in a different format?</p></td></tr><tr><td colspan="1"
rowspan="1" class="confluenceTd"><p><span
class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image
confluence-external-resource"
src="http://cwiki.apache.org/confluence/download/attachments/49204/clear.png"
data-image-src="http://cwiki.apache.org/confluence/download/attachments/49204/clear.png"></span></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect"
href="sort.html">Sort</a></p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>How can I sort the bod
y of a message?</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd">Script</td><td colspan="1" rowspan="1"
class="confluenceTd">How do I execute a script which may not change the
message?</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><span
class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image
confluence-external-resource"
src="http://cwiki.apache.org/confluence/download/attachments/49204/clear.png"
data-image-src="http://cwiki.apache.org/confluence/download/attachments/49204/clear.png"></span></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect"
href="validate.html">Validate</a></p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>How can I validate a
message?</p></td></tr></tbody></table>
+ <table class="confluenceTable"><tbody><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p><span class="confluence-embedded-file-wrapper"><img
class="confluence-embedded-image confluence-external-resource"
src="http://www.eaipatterns.com/img/DataEnricherIcon.gif"
data-image-src="http://www.eaipatterns.com/img/DataEnricherIcon.gif"></span></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect"
href="content-enricher.html">Content Enricher</a></p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>How do we communicate with another system
if the message originator does not have all the required data items
available?</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p><span class="confluence-embedded-file-wrapper"><img
class="confluence-embedded-image confluence-external-resource"
src="http://www.eaipatterns.com/img/ContentFilterIcon.gif"
data-image-src="http://www.eaipatterns.com/img/ContentFilterIcon.gif"></span></p></td><td
colspan="1"
rowspan="1" class="confluenceTd"><p><a shape="rect"
href="content-filter.html">Content Filter</a></p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>How do you simplify dealing with a large
message, when you are interested only in a few data items?</p></td></tr><tr><td
colspan="1" rowspan="1" class="confluenceTd"><p><span
class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image
confluence-external-resource"
src="http://www.eaipatterns.com/img/StoreInLibraryIcon.gif"
data-image-src="http://www.eaipatterns.com/img/StoreInLibraryIcon.gif"></span></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect"
href="claim-check.html">Claim Check</a></p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>How can we reduce the data volume of message sent
across the system without sacrificing information content?</p></td></tr><tr><td
colspan="1" rowspan="1" class="confluenceTd"><p><span
class="confluence-embedded-file-wrapper"><img class="con
fluence-embedded-image confluence-external-resource"
src="http://www.eaipatterns.com/img/NormalizerIcon.gif"
data-image-src="http://www.eaipatterns.com/img/NormalizerIcon.gif"></span></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect"
href="normalizer.html">Normalizer</a></p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>How do you process messages that are semantically
equivalent, but arrive in a different format?</p></td></tr><tr><td colspan="1"
rowspan="1" class="confluenceTd"><p><span
class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image
confluence-external-resource"
src="http://cwiki.apache.org/confluence/download/attachments/49204/clear.png"
data-image-src="http://cwiki.apache.org/confluence/download/attachments/49204/clear.png"></span></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect"
href="sort.html">Sort</a></p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>How can I sort the bod
y of a message?</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"><p>Script</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>How do I execute a script which may not change the
message?</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p><span class="confluence-embedded-file-wrapper"><img
class="confluence-embedded-image confluence-external-resource"
src="http://cwiki.apache.org/confluence/download/attachments/49204/clear.png"
data-image-src="http://cwiki.apache.org/confluence/download/attachments/49204/clear.png"></span></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect"
href="validate.html">Validate</a></p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>How can I validate a
message?</p></td></tr></tbody></table>
</div><h3 id="BookInOnePage-MessagingEndpoints">Messaging Endpoints</h3><div
class="table-wrap">
<table class="confluenceTable"><tbody><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p><span class="confluence-embedded-file-wrapper"><img
class="confluence-embedded-image confluence-external-resource"
src="http://cwiki.apache.org/confluence/download/attachments/49204/clear.png"
data-image-src="http://cwiki.apache.org/confluence/download/attachments/49204/clear.png"></span></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect"
href="messaging-mapper.html">Messaging Mapper</a></p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>How do you move data between domain objects
and the messaging infrastructure while keeping the two independent of each
other?</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p><span class="confluence-embedded-file-wrapper"><img
class="confluence-embedded-image confluence-external-resource"
src="http://www.eaipatterns.com/img/EventDrivenConsumerIcon.gif"
data-image-src="http://www.eaipatterns.com/img/Even
tDrivenConsumerIcon.gif"></span></p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p><a shape="rect" href="event-driven-consumer.html">Event
Driven Consumer</a></p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>How can an application automatically consume messages
as they become available?</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p><span class="confluence-embedded-file-wrapper"><img
class="confluence-embedded-image confluence-external-resource"
src="http://www.eaipatterns.com/img/PollingConsumerIcon.gif"
data-image-src="http://www.eaipatterns.com/img/PollingConsumerIcon.gif"></span></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect"
href="polling-consumer.html">Polling Consumer</a></p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>How can an application consume a message
when the application is ready?</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p><span class="confluence-embedded-fil
e-wrapper"><img class="confluence-embedded-image confluence-external-resource"
src="http://www.eaipatterns.com/img/CompetingConsumersIcon.gif"
data-image-src="http://www.eaipatterns.com/img/CompetingConsumersIcon.gif"></span></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect"
href="competing-consumers.html">Competing Consumers</a></p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>How can a messaging client process multiple
messages concurrently?</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p><span class="confluence-embedded-file-wrapper"><img
class="confluence-embedded-image confluence-external-resource"
src="http://www.eaipatterns.com/img/MessageDispatcherIcon.gif"
data-image-src="http://www.eaipatterns.com/img/MessageDispatcherIcon.gif"></span></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect"
href="message-dispatcher.html">Message Dispatcher</a></p></td><td colspan="1"
rowspan="1" class="confluence
Td"><p>How can multiple consumers on a single channel coordinate their message
processing?</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p><span class="confluence-embedded-file-wrapper"><img
class="confluence-embedded-image confluence-external-resource"
src="http://www.eaipatterns.com/img/MessageSelectorIcon.gif"
data-image-src="http://www.eaipatterns.com/img/MessageSelectorIcon.gif"></span></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect"
href="selective-consumer.html">Selective Consumer</a></p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>How can a message consumer select which
messages it wishes to receive?</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p><span class="confluence-embedded-file-wrapper"><img
class="confluence-embedded-image confluence-external-resource"
src="http://www.eaipatterns.com/img/DurableSubscriptionIcon.gif"
data-image-src="http://www.eaipatterns.com/img/DurableSubscriptionIcon.
gif"></span></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><a
shape="rect" href="durable-subscriber.html">Durable Subscriber</a></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>How can a subscriber avoid
missing messages while it's not listening for them?</p></td></tr><tr><td
colspan="1" rowspan="1" class="confluenceTd"><p><span
class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image
confluence-external-resource"
src="http://cwiki.apache.org/confluence/download/attachments/49204/clear.png"
data-image-src="http://cwiki.apache.org/confluence/download/attachments/49204/clear.png"></span></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect"
href="idempotent-consumer.html">Idempotent Consumer</a></p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>How can a message receiver deal with
duplicate messages?</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p><span class="confluence-embedded-file-
wrapper"><img class="confluence-embedded-image confluence-external-resource"
src="http://www.eaipatterns.com/img/TransactionalClientIcon.gif"
data-image-src="http://www.eaipatterns.com/img/TransactionalClientIcon.gif"></span></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect"
href="transactional-client.html">Transactional Client</a></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>How can a client control its
transactions with the messaging system?</p></td></tr><tr><td colspan="1"
rowspan="1" class="confluenceTd"><p><span
class="confluence-embedded-file-wrapper"><img class="confluence-embedded-image
confluence-external-resource"
src="http://www.eaipatterns.com/img/MessagingGatewayIcon.gif"
data-image-src="http://www.eaipatterns.com/img/MessagingGatewayIcon.gif"></span></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect"
href="messaging-gateway.html">Messaging Gateway</a></p></td><td colspan="1"
rowspan="1" class="confluence
Td"><p>How do you encapsulate access to the messaging system from the rest of
the application?</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p><span class="confluence-embedded-file-wrapper"><img
class="confluence-embedded-image confluence-external-resource"
src="http://www.eaipatterns.com/img/MessagingAdapterIcon.gif"
data-image-src="http://www.eaipatterns.com/img/MessagingAdapterIcon.gif"></span></p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect"
href="service-activator.html">Service Activator</a></p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>How can an application design a service to
be invoked both via various messaging technologies and via non-messaging
techniques?</p></td></tr></tbody></table>
</div><h3 id="BookInOnePage-SystemManagement">System Management</h3><div
class="table-wrap">
@@ -4040,11 +4040,11 @@ The tutorial has been designed in two pa
While not actual tutorials you might find working through the source of the
various <a shape="rect" href="examples.html">Examples</a> useful.</li></ul>
<h2 id="BookInOnePage-TutorialonSpringRemotingwithJMS">Tutorial on Spring
Remoting with JMS</h2><p> </p><div class="confluence-information-macro
confluence-information-macro-information"><p class="title">Thanks</p><span
class="aui-icon aui-icon-small aui-iconfont-info
confluence-information-macro-icon"></span><div
class="confluence-information-macro-body"><p>This tutorial was kindly donated
to Apache Camel by Martin Gilday.</p></div></div><h2
id="BookInOnePage-Preface">Preface</h2><p>This tutorial aims to guide the
reader through the stages of creating a project which uses Camel to facilitate
the routing of messages from a JMS queue to a <a shape="rect"
class="external-link" href="http://www.springramework.org"
rel="nofollow">Spring</a> service. The route works in a synchronous fashion
returning a response to the client.</p><p><style type="text/css">/*<![CDATA[*/
-div.rbtoc1475659203190 {padding: 0px;}
-div.rbtoc1475659203190 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1475659203190 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1475767129863 {padding: 0px;}
+div.rbtoc1475767129863 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1475767129863 li {margin-left: 0px;padding-left: 0px;}
-/*]]>*/</style></p><div class="toc-macro rbtoc1475659203190">
+/*]]>*/</style></p><div class="toc-macro rbtoc1475767129863">
<ul class="toc-indentation"><li><a shape="rect"
href="#BookInOnePage-TutorialonSpringRemotingwithJMS">Tutorial on Spring
Remoting with JMS</a></li><li><a shape="rect"
href="#BookInOnePage-Preface">Preface</a></li><li><a shape="rect"
href="#BookInOnePage-Prerequisites">Prerequisites</a></li><li><a shape="rect"
href="#BookInOnePage-Distribution">Distribution</a></li><li><a shape="rect"
href="#BookInOnePage-About">About</a></li><li><a shape="rect"
href="#BookInOnePage-CreatetheCamelProject">Create the Camel Project</a>
<ul class="toc-indentation"><li><a shape="rect"
href="#BookInOnePage-UpdatethePOMwithDependencies">Update the POM with
Dependencies</a></li></ul>
</li><li><a shape="rect" href="#BookInOnePage-WritingtheServer">Writing the
Server</a>
@@ -6159,11 +6159,11 @@ So we completed the last piece in the pi
<p>This example has been removed from <strong>Camel 2.9</strong> onwards.
Apache Axis 1.4 is a very old and unsupported framework. We encourage users to
use <a shape="rect" href="cxf.html">CXF</a> instead of Axis.</p></div></div>
<style type="text/css">/*<![CDATA[*/
-div.rbtoc1475659204319 {padding: 0px;}
-div.rbtoc1475659204319 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1475659204319 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1475767131065 {padding: 0px;}
+div.rbtoc1475767131065 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1475767131065 li {margin-left: 0px;padding-left: 0px;}
-/*]]>*/</style><div class="toc-macro rbtoc1475659204319">
+/*]]>*/</style><div class="toc-macro rbtoc1475767131065">
<ul class="toc-indentation"><li><a shape="rect"
href="#BookInOnePage-TutorialusingAxis1.4withApacheCamel">Tutorial using Axis
1.4 with Apache Camel</a>
<ul class="toc-indentation"><li><a shape="rect"
href="#BookInOnePage-Prerequisites">Prerequisites</a></li><li><a shape="rect"
href="#BookInOnePage-Distribution">Distribution</a></li><li><a shape="rect"
href="#BookInOnePage-Introduction">Introduction</a></li><li><a shape="rect"
href="#BookInOnePage-SettinguptheprojecttorunAxis">Setting up the project to
run Axis</a>
<ul class="toc-indentation"><li><a shape="rect"
href="#BookInOnePage-Maven2">Maven 2</a></li><li><a shape="rect"
href="#BookInOnePage-wsdl">wsdl</a></li><li><a shape="rect"
href="#BookInOnePage-ConfiguringAxis">Configuring Axis</a></li><li><a
shape="rect" href="#BookInOnePage-RunningtheExample">Running the
Example</a></li></ul>
@@ -13128,13 +13128,13 @@ from("direct:start")
<div class="codeContent panelContent pdl">
<script class="brush: java; gutter: false; theme: Default"
type="syntaxhighlighter"> public static class MyLoadBalancer extends
LoadBalancerSupport { public boolean process(Exchange exchange, AsyncCallback
callback) { String body = exchange.getIn().getBody(String.class); try { if
(&quot;x&quot;.equals(body)) {
getProcessors().get(0).process(exchange); } else if
(&quot;y&quot;.equals(body)) {
getProcessors().get(1).process(exchange); } else {
getProcessors().get(2).process(exchange); } } catch (Throwable e) {
exchange.setException(e); } callback.done(true); return true; } } </script>
</div>
- </div><h3 id="BookInOnePage-CircuitBreaker">Circuit Breaker</h3><p>The
Circuit Breaker load balancer is a stateful pattern that monitors all calls for
certain exceptions. Initially the Circuit Breaker is in closed state and passes
all messages. If there are failures and the threshold is reached, it moves to
open state and rejects all calls until halfOpenAfter timeout is reached. After
this timeout is reached, if there is a new call, it will pass and if the result
is success the Circuit Breaker will move to closed state, or to open state if
there was an error.</p><p>An example using Java DSL:</p><div class="code panel
pdl" style="border-width: 1px;">
+ </div><h3 id="BookInOnePage-CircuitBreaker">Circuit Breaker</h3><p>The
Circuit Breaker load balancer is a stateful pattern that monitors all calls for
certain exceptions. Initially the Circuit Breaker is in closed state and passes
all messages. If there are failures and the threshold is reached, it moves to
open state and rejects all calls until halfOpenAfter timeout is reached. After
this timeout is reached, if there is a new call, it will pass and if the result
is success the Circuit Breaker will move to closed state, or to open state if
there was an error.</p><p>When the circuit breaker is closed, it will throw a
<code>java.util.concurrent.RejectedExecutionException</code>. This can then be
caught to provide an alternate path for processing exchanges.</p><p>An example
using Java DSL:</p><div class="code panel pdl" style="border-width: 1px;">
<div class="codeContent panelContent pdl">
- <script class="brush: java; gutter: false; theme: Default"
type="syntaxhighlighter">from(&quot;direct:start&quot;).loadBalance()
.circuitBreaker(2, 1000L, MyCustomException.class)
.to(&quot;mock:result&quot;); </script>
+ <script class="brush: java; gutter: false; theme: Default"
type="syntaxhighlighter">from(&quot;direct:start&quot;)
.onException(RejectedExecutionException.class) .handled(true)
.to(&quot;mock:serviceUnavailable&quot;) .end() .loadBalance()
.circuitBreaker(2, 1000L, MyCustomException.class)
.to(&quot;mock:service&quot;) .end(); </script>
</div>
</div><p>And the same example using Spring XML:</p><div class="code panel pdl"
style="border-width: 1px;">
<div class="codeContent panelContent pdl">
- <script class="brush: xml; gutter: false; theme: Default"
type="syntaxhighlighter">&lt;camelContext id=&quot;camel&quot;
xmlns=&quot;http://camel.apache.org/schema/spring&quot;&gt;
&lt;route&gt; &lt;from
uri=&quot;direct:start&quot;/&gt; &lt;loadBalance&gt;
&lt;circuitBreaker threshold=&quot;2&quot;
halfOpenAfter=&quot;1000&quot;&gt;
&lt;exception&gt;MyCustomException&lt;/exception&gt;
&lt;/circuitBreaker&gt; &lt;to
uri=&quot;mock:result&quot;/&gt; &lt;/loadBalance&gt;
&lt;/route&gt; &lt;/camelContext&gt; </script>
+ <script class="brush: xml; gutter: false; theme: Default"
type="syntaxhighlighter">&lt;camelContext id=&quot;camel&quot;
xmlns=&quot;http://camel.apache.org/schema/spring&quot;&gt;
&lt;route&gt; &lt;from
uri=&quot;direct:start&quot;/&gt; &lt;onException&gt;
&lt;exception&gt;java.util.concurrent.RejectedExecutionException&lt;/exception&gt;
&lt;handled&gt;&lt;constant&gt;true&lt;/constant&gt;&lt;/handled&gt;
&lt;to uri=&quot;mock:serviceUnavailable&quot;/&gt;
&lt;/onException&gt; &lt;loadBalance&gt;
&lt;circuitBreaker threshold=&quot;2&quot;
halfOpenAfter=&quot;1000&quot;&gt;
&lt;exception&gt;MyCustomException&lt;/exception&gt;
&lt;/circuitBreaker&gt; &lt;to
uri=&quot;mock:service&quot;/&gt; &lt;/loadBalance&gt;
&lt;/route&gt; &lt;/camelContext&gt; </script
>
</div>
</div><p></p><h4 id="BookInOnePage-UsingThisPattern.27">Using This
Pattern</h4> <p>If you would like to use this EIP Pattern then please read the
<a shape="rect" href="getting-started.html">Getting Started</a>, you may also
find the <a shape="rect" href="architecture.html">Architecture</a> useful
particularly the description of <a shape="rect"
href="endpoint.html">Endpoint</a> and <a shape="rect"
href="uris.html">URIs</a>. Then you could try out some of the <a shape="rect"
href="examples.html">Examples</a> first before trying this pattern out.</p><h3
id="BookInOnePage-Multicast">Multicast</h3><p>The Multicast allows to route the
same message to a number of endpoints and process them in a different way. The
main difference between the Multicast and Splitter is that Splitter will split
the message into several pieces but the Multicast will not modify the request
message.</p><h3 id="BookInOnePage-Options.16">Options</h3><div
class="confluenceTableSmall">
<div class="table-wrap">
@@ -14385,8 +14385,8 @@ cometds://localhost:8443/service/mychann
<div class="confluence-information-macro-body">
<p>When using CXF in streaming modes (see DataFormat option), then also read
about <a shape="rect" href="stream-caching.html">Stream caching</a>.</p>
</div>
-</div><p>The <strong>cxf:</strong> component provides integration with <a
shape="rect" href="http://cxf.apache.org">Apache CXF</a> for connecting to
JAX-WS services hosted in CXF.</p><p><style type="text/css">/**/
div.rbtoc1475659222415 {padding: 0px;} div.rbtoc1475659222415 ul {list-style:
disc;margin-left: 0px;} div.rbtoc1475659222415 li {margin-left:
0px;padding-left: 0px;} /**/</style>
- </p><div class="toc-macro rbtoc1475659222415">
+</div><p>The <strong>cxf:</strong> component provides integration with <a
shape="rect" href="http://cxf.apache.org">Apache CXF</a> for connecting to
JAX-WS services hosted in CXF.</p><p><style type="text/css">/**/
div.rbtoc1475767156464 {padding: 0px;} div.rbtoc1475767156464 ul {list-style:
disc;margin-left: 0px;} div.rbtoc1475767156464 li {margin-left:
0px;padding-left: 0px;} /**/</style>
+ </p><div class="toc-macro rbtoc1475767156464">
<ul class="toc-indentation"><li><a shape="rect"
href="#BookInOnePage-CXFComponent">CXF Component</a>
<ul class="toc-indentation"><li><a shape="rect"
href="#BookInOnePage-URIformat">URI format</a></li><li><a shape="rect"
href="#BookInOnePage-Options">Options</a>
<ul class="toc-indentation"><li><a shape="rect"
href="#BookInOnePage-Thedescriptionsofthedataformats">The descriptions of the
dataformats</a>
Modified: websites/production/camel/content/book-pattern-appendix.html
==============================================================================
--- websites/production/camel/content/book-pattern-appendix.html (original)
+++ websites/production/camel/content/book-pattern-appendix.html Thu Oct 6
15:21:23 2016
@@ -1418,13 +1418,13 @@
<div class="codeContent panelContent pdl">
<script class="brush: java; gutter: false; theme: Default"
type="syntaxhighlighter"> public static class MyLoadBalancer extends
LoadBalancerSupport { public boolean process(Exchange exchange, AsyncCallback
callback) { String body = exchange.getIn().getBody(String.class); try { if
(&quot;x&quot;.equals(body)) {
getProcessors().get(0).process(exchange); } else if
(&quot;y&quot;.equals(body)) {
getProcessors().get(1).process(exchange); } else {
getProcessors().get(2).process(exchange); } } catch (Throwable e) {
exchange.setException(e); } callback.done(true); return true; } } </script>
</div>
- </div><h3 id="BookPatternAppendix-CircuitBreaker">Circuit Breaker</h3><p>The
Circuit Breaker load balancer is a stateful pattern that monitors all calls for
certain exceptions. Initially the Circuit Breaker is in closed state and passes
all messages. If there are failures and the threshold is reached, it moves to
open state and rejects all calls until halfOpenAfter timeout is reached. After
this timeout is reached, if there is a new call, it will pass and if the result
is success the Circuit Breaker will move to closed state, or to open state if
there was an error.</p><p>An example using Java DSL:</p><div class="code panel
pdl" style="border-width: 1px;">
+ </div><h3 id="BookPatternAppendix-CircuitBreaker">Circuit Breaker</h3><p>The
Circuit Breaker load balancer is a stateful pattern that monitors all calls for
certain exceptions. Initially the Circuit Breaker is in closed state and passes
all messages. If there are failures and the threshold is reached, it moves to
open state and rejects all calls until halfOpenAfter timeout is reached. After
this timeout is reached, if there is a new call, it will pass and if the result
is success the Circuit Breaker will move to closed state, or to open state if
there was an error.</p><p>When the circuit breaker is closed, it will throw a
<code>java.util.concurrent.RejectedExecutionException</code>. This can then be
caught to provide an alternate path for processing exchanges.</p><p>An example
using Java DSL:</p><div class="code panel pdl" style="border-width: 1px;">
<div class="codeContent panelContent pdl">
- <script class="brush: java; gutter: false; theme: Default"
type="syntaxhighlighter">from(&quot;direct:start&quot;).loadBalance()
.circuitBreaker(2, 1000L, MyCustomException.class)
.to(&quot;mock:result&quot;); </script>
+ <script class="brush: java; gutter: false; theme: Default"
type="syntaxhighlighter">from(&quot;direct:start&quot;)
.onException(RejectedExecutionException.class) .handled(true)
.to(&quot;mock:serviceUnavailable&quot;) .end() .loadBalance()
.circuitBreaker(2, 1000L, MyCustomException.class)
.to(&quot;mock:service&quot;) .end(); </script>
</div>
</div><p>And the same example using Spring XML:</p><div class="code panel pdl"
style="border-width: 1px;">
<div class="codeContent panelContent pdl">
- <script class="brush: xml; gutter: false; theme: Default"
type="syntaxhighlighter">&lt;camelContext id=&quot;camel&quot;
xmlns=&quot;http://camel.apache.org/schema/spring&quot;&gt;
&lt;route&gt; &lt;from
uri=&quot;direct:start&quot;/&gt; &lt;loadBalance&gt;
&lt;circuitBreaker threshold=&quot;2&quot;
halfOpenAfter=&quot;1000&quot;&gt;
&lt;exception&gt;MyCustomException&lt;/exception&gt;
&lt;/circuitBreaker&gt; &lt;to
uri=&quot;mock:result&quot;/&gt; &lt;/loadBalance&gt;
&lt;/route&gt; &lt;/camelContext&gt; </script>
+ <script class="brush: xml; gutter: false; theme: Default"
type="syntaxhighlighter">&lt;camelContext id=&quot;camel&quot;
xmlns=&quot;http://camel.apache.org/schema/spring&quot;&gt;
&lt;route&gt; &lt;from
uri=&quot;direct:start&quot;/&gt; &lt;onException&gt;
&lt;exception&gt;java.util.concurrent.RejectedExecutionException&lt;/exception&gt;
&lt;handled&gt;&lt;constant&gt;true&lt;/constant&gt;&lt;/handled&gt;
&lt;to uri=&quot;mock:serviceUnavailable&quot;/&gt;
&lt;/onException&gt; &lt;loadBalance&gt;
&lt;circuitBreaker threshold=&quot;2&quot;
halfOpenAfter=&quot;1000&quot;&gt;
&lt;exception&gt;MyCustomException&lt;/exception&gt;
&lt;/circuitBreaker&gt; &lt;to
uri=&quot;mock:service&quot;/&gt; &lt;/loadBalance&gt;
&lt;/route&gt; &lt;/camelContext&gt; </script
>
</div>
</div><p></p><h4 id="BookPatternAppendix-UsingThisPattern.27">Using This
Pattern</h4> <p>If you would like to use this EIP Pattern then please read the
<a shape="rect" href="getting-started.html">Getting Started</a>, you may also
find the <a shape="rect" href="architecture.html">Architecture</a> useful
particularly the description of <a shape="rect"
href="endpoint.html">Endpoint</a> and <a shape="rect"
href="uris.html">URIs</a>. Then you could try out some of the <a shape="rect"
href="examples.html">Examples</a> first before trying this pattern out.</p><h3
id="BookPatternAppendix-Multicast">Multicast</h3><p>The Multicast allows to
route the same message to a number of endpoints and process them in a different
way. The main difference between the Multicast and Splitter is that Splitter
will split the message into several pieces but the Multicast will not modify
the request message.</p><h3 id="BookPatternAppendix-Options.7">Options</h3><div
class="confluenceTableSmall">
<div class="table-wrap">
Modified: websites/production/camel/content/cache/main.pageCache
==============================================================================
Binary files - no diff available.
Modified: websites/production/camel/content/load-balancer.html
==============================================================================
--- websites/production/camel/content/load-balancer.html (original)
+++ websites/production/camel/content/load-balancer.html Thu Oct 6 15:21:23
2016
@@ -266,22 +266,33 @@ public static class MyLoadBalancer exten
}
}
]]></script>
-</div></div><h3 id="LoadBalancer-CircuitBreaker">Circuit Breaker</h3><p>The
Circuit Breaker load balancer is a stateful pattern that monitors all calls for
certain exceptions. Initially the Circuit Breaker is in closed state and passes
all messages. If there are failures and the threshold is reached, it moves to
open state and rejects all calls until halfOpenAfter timeout is reached. After
this timeout is reached, if there is a new call, it will pass and if the result
is success the Circuit Breaker will move to closed state, or to open state if
there was an error.</p><p>An example using Java DSL:</p><div class="code panel
pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="brush: java; gutter: false; theme: Default"
type="syntaxhighlighter"><![CDATA[from("direct:start").loadBalance()
- .circuitBreaker(2, 1000L, MyCustomException.class)
- .to("mock:result");
+</div></div><h3 id="LoadBalancer-CircuitBreaker">Circuit Breaker</h3><p>The
Circuit Breaker load balancer is a stateful pattern that monitors all calls for
certain exceptions. Initially the Circuit Breaker is in closed state and passes
all messages. If there are failures and the threshold is reached, it moves to
open state and rejects all calls until halfOpenAfter timeout is reached. After
this timeout is reached, if there is a new call, it will pass and if the result
is success the Circuit Breaker will move to closed state, or to open state if
there was an error.</p><p>When the circuit breaker is closed, it will throw a
<code>java.util.concurrent.RejectedExecutionException</code>. This can then be
caught to provide an alternate path for processing exchanges.</p><p>An example
using Java DSL:</p><div class="code panel pdl" style="border-width: 1px;"><div
class="codeContent panelContent pdl">
+<script class="brush: java; gutter: false; theme: Default"
type="syntaxhighlighter"><![CDATA[from("direct:start")
+ .onException(RejectedExecutionException.class)
+ .handled(true)
+ .to("mock:serviceUnavailable")
+ .end()
+ Â .loadBalance()
+ .circuitBreaker(2, 1000L, MyCustomException.class)
+ .to("mock:service")
+ .end();
]]></script>
</div></div><p>And the same example using Spring XML:</p><div class="code
panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
<script class="brush: xml; gutter: false; theme: Default"
type="syntaxhighlighter"><![CDATA[<camelContext id="camel"
xmlns="http://camel.apache.org/schema/spring">
<route>
- <from uri="direct:start"/>
- <loadBalance>
- <circuitBreaker threshold="2"
halfOpenAfter="1000">
- <exception>MyCustomException</exception>
- </circuitBreaker>
- <to uri="mock:result"/>
- </loadBalance>
-</route>
+ <from uri="direct:start"/>
+ <onException>
+
<exception>java.util.concurrent.RejectedExecutionException</exception>
+
<handled><constant>true</constant></handled>
+ <to uri="mock:serviceUnavailable"/>
+ </onException>
+ Â <loadBalance>
+ <circuitBreaker threshold="2"
halfOpenAfter="1000">
+ <exception>MyCustomException</exception>
+ </circuitBreaker>
+ <to uri="mock:service"/>
+ </loadBalance>
+ </route>
</camelContext>
]]></script>
</div></div><p></p><h4 id="LoadBalancer-UsingThisPattern">Using This
Pattern</h4>