Wire TapPage edited by Glen Mazza
Comment:
Clarified WireTap options a bit.
Changes (5)
Full ContentWire TapWire Tap (from the EIP patterns) allows you to route messages to a separate location while they are being forwarded to the ultimate destination.
Options
WireTap thread poolThe Wire Tap uses a thread pool to process the tapped messages. This thread pool will by default use the settings detailed at Threading Model. In particular, when the pool is exhausted (with all threads utilized), further wiretaps will be executed synchronously by the calling thread. To remedy this, you can configure an explicit thread pool on the Wire Tap having either a different rejection policy, a larger worker queue, or more worker threads. WireTap nodeCamel's WireTap node supports two flavors when tapping an Exchange: -With the traditional WireTap, Camel will copy the original Exchange and set its Exchange Pattern to InOnly, as we want the tapped Exchange to be sent in a fire and forget style. The tapped Exchange is then sent in a separate thread so it can run in parallel with the original. -Camel also provides an option of sending a new Exchange allowing you to populate it with new values Sending a copy (traditional wiretap)Using the Fluent Builders from("direct:start") .to("log:foo") .wireTap("direct:tap") .to("mock:result");
Java DSLfrom("direct:start") // tap a new message and send it to direct:tap // the new message should be Bye World with 2 headers .wireTap("direct:tap") // create the new tap message body and headers .newExchangeBody(constant("Bye World")) .newExchangeHeader("id", constant(123)) .newExchangeHeader("date", simple("${date:now:yyyyMMdd}")) .end() // here we continue routing the original messages .to("mock:result"); // this is the tapped route from("direct:tap") .to("mock:tap"); XML DSLThe XML DSL is slightly different than Java DSL in how you configure the message body and headers using <body> and <setHeader>: <route> <from uri="direct:start"/> <!-- tap a new message and send it to direct:tap --> <!-- the new message should be Bye World with 2 headers --> <wireTap uri="direct:tap"> <!-- create the new tap message body and headers --> <body><constant>Bye World</constant></body> <setHeader headerName="id"><constant>123</constant></setHeader> <setHeader headerName="date"><simple>${date:now:yyyyMMdd}</simple></setHeader> </wireTap> <!-- here we continue routing the original message --> <to uri="mock:result"/> </route> Using onPrepare to execute custom logic when preparing messagesAvailable as of Camel 2.8 See details at Multicast Using This PatternIf you would like to use this EIP Pattern then please read the Getting Started, you may also find the Architecture useful particularly the description of Endpoint and URIs. Then you could try out some of the Examples first before trying this pattern out.
Change Notification Preferences
View Online
|
View Changes
|
Add Comment
|
- [CONF] Apache Camel > Wire Tap confluence
- [CONF] Apache Camel > Wire Tap confluence