You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by bu...@apache.org on 2014/03/14 07:21:59 UTC

svn commit: r901519 [2/4] - in /websites/production/camel/content: book-dataformat-appendix.html book-in-one-page.html cache/main.pageCache crypto.html jetty.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 Fri Mar 14 06:21:58 2014
@@ -672,7 +672,9 @@ disruptor-vm:someName[?<option>]
 </div></div></td><td colspan="1" rowspan="1" class="confluenceTd"><p>For reading/writing from/to an <a shape="rect" class="external-link" href="http://hadoop.apache.org/hbase/">HBase</a> store (Hadoop database)</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" href="hdfs.html">HDFS</a> / camel-hdfs</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
 <script class="theme: Default; brush: plain; gutter: false" type="syntaxhighlighter"><![CDATA[hdfs://hostName[:port][/path][?options]
 ]]></script>
-</div></div></td><td colspan="1" rowspan="1" class="confluenceTd"><p>For reading/writing from/to an <a shape="rect" class="external-link" href="http://hadoop.apache.org/hdfs/">HDFS</a> filesystem</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" href="hl7.html">HL7</a> / camel-hl7</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+</div></div></td><td colspan="1" rowspan="1" class="confluenceTd"><p>For reading/writing from/to an <a shape="rect" class="external-link" href="http://hadoop.apache.org/hdfs/">HDFS</a> filesystem using Hadoop 1.x</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" href="hdfs.html">HDFS2</a> / camel-hdfs2</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<script class="theme: Default; brush: plain; gutter: false" type="syntaxhighlighter"><![CDATA[ hdfs2://hostName[:port][/path][?options]]]></script>
+</div></div></td><td colspan="1" rowspan="1" class="confluenceTd"><span>For reading/writing from/to an </span><a shape="rect" class="external-link" href="http://hadoop.apache.org/hdfs/">HDFS</a><span> filesystem using Hadoop 2.x</span></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" href="hl7.html">HL7</a> / camel-hl7</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
 <script class="theme: Default; brush: plain; gutter: false" type="syntaxhighlighter"><![CDATA[mina2:tcp://hostName[:port][?options]
 ]]></script>
 </div></div></td><td colspan="1" rowspan="1" class="confluenceTd"><p>For working with the HL7 MLLP protocol and the HL7 model using the <a shape="rect" class="external-link" href="http://hl7api.sourceforge.net" rel="nofollow">HAPI library</a></p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><a shape="rect" href="infinispan.html">Infinispan</a> / camel-infinispan</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
@@ -4260,11 +4262,11 @@ While not actual tutorials you might fin
                     </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.rbtoc1393949900205 {padding: 0px;}
-div.rbtoc1393949900205 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1393949900205 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1394778047421 {padding: 0px;}
+div.rbtoc1394778047421 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1394778047421 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style></p><div class="toc-macro rbtoc1393949900205">
+/*]]>*/</style></p><div class="toc-macro rbtoc1394778047421">
 <ul class="toc-indentation"><li><a shape="rect" href="#Tutorial-JmsRemoting-TutorialonSpringRemotingwithJMS">Tutorial on Spring Remoting with JMS</a></li><li><a shape="rect" href="#Tutorial-JmsRemoting-Preface">Preface</a></li><li><a shape="rect" href="#Tutorial-JmsRemoting-Prerequisites">Prerequisites</a></li><li><a shape="rect" href="#Tutorial-JmsRemoting-Distribution">Distribution</a></li><li><a shape="rect" href="#Tutorial-JmsRemoting-About">About</a></li><li><a shape="rect" href="#Tutorial-JmsRemoting-CreatetheCamelProject">Create the Camel Project</a>
 <ul class="toc-indentation"><li><a shape="rect" href="#Tutorial-JmsRemoting-UpdatethePOMwithDependencies">Update the POM with Dependencies</a></li></ul>
 </li><li><a shape="rect" href="#Tutorial-JmsRemoting-WritingtheServer">Writing the Server</a>
@@ -6450,11 +6452,11 @@ So we completed the last piece in the pi
 
 
 <style type="text/css">/*<![CDATA[*/
-div.rbtoc1393949900780 {padding: 0px;}
-div.rbtoc1393949900780 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1393949900780 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1394778047719 {padding: 0px;}
+div.rbtoc1394778047719 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1394778047719 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style><div class="toc-macro rbtoc1393949900780">
+/*]]>*/</style><div class="toc-macro rbtoc1394778047719">
 <ul class="toc-indentation"><li><a shape="rect" href="#Tutorial-AXIS-Camel-TutorialusingAxis1.4withApacheCamel">Tutorial using Axis 1.4 with Apache Camel</a>
 <ul class="toc-indentation"><li><a shape="rect" href="#Tutorial-AXIS-Camel-Prerequisites">Prerequisites</a></li><li><a shape="rect" href="#Tutorial-AXIS-Camel-Distribution">Distribution</a></li><li><a shape="rect" href="#Tutorial-AXIS-Camel-Introduction">Introduction</a></li><li><a shape="rect" href="#Tutorial-AXIS-Camel-SettinguptheprojecttorunAxis">Setting up the project to run Axis</a>
 <ul class="toc-indentation"><li><a shape="rect" href="#Tutorial-AXIS-Camel-Maven2">Maven 2</a></li><li><a shape="rect" href="#Tutorial-AXIS-Camel-wsdl">wsdl</a></li><li><a shape="rect" href="#Tutorial-AXIS-Camel-ConfiguringAxis">Configuring Axis</a></li><li><a shape="rect" href="#Tutorial-AXIS-Camel-RunningtheExample">Running the Example</a></li></ul>
@@ -14031,7 +14033,9 @@ from(&quot;direct:key-in-header-decrypt&
 <script class="theme: Default; brush: xml; gutter: false" type="syntaxhighlighter"><![CDATA[
 &lt;crypto id=&quot;nokey&quot; algorithm=&quot;DES&quot; /&gt;
 ]]></script>
-</div></div><h3 id="BookInOnePage-PGPDataFormatOptions">PGPDataFormat Options</h3><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p> Name </p></th><th colspan="1" rowspan="1" class="confluenceTh"><p> Type </p></th><th colspan="1" rowspan="1" class="confluenceTh"><p> Default </p></th><th colspan="1" rowspan="1" class="confluenceTh"><p> Description </p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>keyUserid</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>String</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>null</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> The user ID of the key in the PGP keyring used during encryption. See also option <code>keyUserids</code>. Can also be only a part of a user ID. For example, if the user ID is "Test User &lt;test@camel.com&gt;" then you can use the part "Test User" or "&lt;test@camel.com&gt;" to addres
 s the user ID. </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>keyUserids</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>List&lt;String&gt;</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>null</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <strong>Since camel 2.12.2</strong>: PGP allows to encrypt the symmetric key by several asymmetric public receiver keys. You can specify here the User IDs or parts of User IDs of several public keys contained in the PGP keyring.  If you just have one User ID, then you can also use the option <code>keyUserid</code>. The User ID specified in <code>keyUserid</code> and the User IDs in <code>keyUserids</code> will be merged together and the corresponding public keys will be used for the encryption. </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>password</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd">
 <p> <code>String</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>null</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> Password used when opening the private key (not used for encryption). </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>keyFileName</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>String</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>null</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> Filename of the keyring; must be accessible as a classpath resource (but you can specify a location in the file system by using the "file:" prefix). </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>encryptionKeyRing</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>byte[]</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>null</code> </p></td><td colspan="1" row
 span="1" class="confluenceTd"><p> <strong>Since camel 2.12.1</strong>; encryption keyring; you can not set the keyFileName and encryptionKeyRing at the same time. </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>signatureKeyUserid</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>String</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>null</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <strong>Since Camel 2.11.0</strong>; optional User ID of the key in the PGP keyring used for signing (during encryption) or signature verification (during decryption). During the signature verification process the specified User ID restricts the public keys from the public keyring which can be used for the verification. If no User ID is specified for the signature verficiation then any public key in the public keyring can be used for the verification. Can also be only a part of a user ID. For example, 
 if the user ID is "Test User &lt;test@camel.com&gt;" then you can use the part "Test User" or "&lt;test@camel.com&gt;" to address the User ID. </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>signatureKeyUserids</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>List&lt;String&gt;</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>null</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <strong>Since Camel 2.12.3</strong>; optional list of User IDs of the key in the PGP keyring used for signing (during encryption) or signature verification (during decryption). You can specify here the User IDs or parts of User IDs of several keys contained in the PGP keyring.  If you just have one User ID, then you can also use the option <code>keyUserid</code>. The User ID specified in <code>keyUserid</code> and the User IDs in <code>keyUserids</code> will be merged together and the corresponding keys will 
 be used for the signing or signature verification. If the specified User IDs reference several keys then for each key a signature is added to the PGP result during the encryption-signing process. In the decryption-verifying process the list of User IDs restricts the list of public keys which can be used for signature verification. If the list of User IDs is empty then any public key in the public keyring can be used for the signature verification.  </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>signaturePassword</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>String</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>null</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <strong>Since Camel 2.11.0</strong>; optional password used when opening the private key used for signing (during encryption). </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>signatureKeyFi
 leName</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>String</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>null</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <strong>Since Camel 2.11.0</strong>; optional filename of the keyring to use for signing (during encryption) or for signature verification (during decryption); must be accessible as a classpath resource (but you can specify a location in the file system by using the "file:" prefix). </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>signatureKeyRing</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>byte[]</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>null</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <strong>Since camel 2.12.1</strong>; signature keyring; you can not set the signatureKeyFileName and signatureKeyRing at the same time. </p></td></tr>
 <tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>algorithm</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>int</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>SymmetricKeyAlgorithmTags.CAST5</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <strong>Since camel 2.12.2</strong>; symmetric key encryption algorithm; possible values are defined in <code>org.bouncycastle.bcpg.SymmetricKeyAlgorithmTags</code>; for example 2 (= TRIPLE DES), 3 (= CAST5), 4 (= BLOWFISH), 6 (= DES), 7 (= AES_128). Only relevant for encrypting. </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>compressionAlgorithm</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>int</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>CompressionAlgorithmTags.ZIP</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <strong>Since camel 2.12.2</strong>; c
 ompression algorithm; possible values are defined in <code>org.bouncycastle.bcpg.CompressionAlgorithmTags</code>; for example 0 (= UNCOMPRESSED), 1 (= ZIP), 2 (= ZLIB), 3 (= BZIP2). Only relevant for encrypting. </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>hashAlgorithm</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>int</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>HashAlgorithmTags.SHA1</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <strong>Since camel 2.12.2</strong>: signature hash algorithm; possible values are defined in <code>org.bouncycastle.bcpg.HashAlgorithmTags</code>; for example 2 (= SHA1), 8 (= SHA256), 9 (= SHA384), 10 (= SHA512), 11 (=SHA224). Only relevant for signing. </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>armored</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>boolean</code> </p></td><td cols
 pan="1" rowspan="1" class="confluenceTd"><p> <code>false</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> This option will cause PGP to base64 encode the encrypted text, making it available for copy/paste, etc. </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>integrity</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>boolean</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>true</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> Adds an integrity check/sign into the encryption file. </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>passphraseAccessor</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <a shape="rect" class="external-link" href="https://github.com/apache/camel/blob/master/components/camel-crypto/src/main/java/org/apache/camel/converter/crypto/PGPPassphraseAccessor.java" rel="nofollow">PGPPassphraseAccessor</a
 > </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>null</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <strong>Since Camel 2.12.2</strong>; provides passphrases corresponding to user Ids.  If no passpharase can be found from the option <code>password</code> or <code>signaturePassword</code> and from the headers <code>CamelPGPDataFormatKeyPassword</code> or <code>CamelPGPDataFormatSignatureKeyPassword</code> then the passphrase is fetched from the passphrase accessor. You provide a bean which implements the interface <a shape="rect" class="external-link" href="https://github.com/apache/camel/blob/master/components/camel-crypto/src/main/java/org/apache/camel/converter/crypto/PGPPassphraseAccessor.java" rel="nofollow">PGPPassphraseAccessor</a>. A default implementation is given by <a shape="rect" class="external-link" href="https://github.com/apache/camel/blob/master/components/camel-crypto/src/main/java/org/apache/camel/converter/crypto/Default
 PGPPassphraseAccessor.java" rel="nofollow">DefaultPGPPassphraseAccessor</a>.  The passphrase accessor is especially useful in the decrypt case; see chapter 'PGP Decrypting/Verifying of Messages Encrypted/Signed by Different Private/Public Keys'  below. </p></td></tr></tbody></table>
+</div></div><h3 id="BookInOnePage-PGPDataFormatOptions">PGPDataFormat Options</h3><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p> Name </p></th><th colspan="1" rowspan="1" class="confluenceTh"><p> Type </p></th><th colspan="1" rowspan="1" class="confluenceTh"><p> Default </p></th><th colspan="1" rowspan="1" class="confluenceTh"><p> Description </p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>keyUserid</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>String</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>null</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> The user ID of the key in the PGP keyring used during encryption. See also option <code>keyUserids</code>. Can also be only a part of a user ID. For example, if the user ID is "Test User &lt;test@camel.com&gt;" then you can use the part "Test User" or "&lt;test@camel.com&gt;" to addres
 s the user ID. </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>keyUserids</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>List&lt;String&gt;</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>null</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <strong>Since camel 2.12.2</strong>: PGP allows to encrypt the symmetric key by several asymmetric public receiver keys. You can specify here the User IDs or parts of User IDs of several public keys contained in the PGP keyring.  If you just have one User ID, then you can also use the option <code>keyUserid</code>. The User ID specified in <code>keyUserid</code> and the User IDs in <code>keyUserids</code> will be merged together and the corresponding public keys will be used for the encryption. </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>password</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd">
 <p> <code>String</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>null</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> Password used when opening the private key (not used for encryption). </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>keyFileName</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>String</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>null</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> Filename of the keyring; must be accessible as a classpath resource (but you can specify a location in the file system by using the "file:" prefix). </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>encryptionKeyRing</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>byte[]</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>null</code> </p></td><td colspan="1" row
 span="1" class="confluenceTd"><p> <strong>Since camel 2.12.1</strong>; encryption keyring; you can not set the keyFileName and encryptionKeyRing at the same time. </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>signatureKeyUserid</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>String</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>null</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <strong>Since Camel 2.11.0</strong>; optional User ID of the key in the PGP keyring used for signing (during encryption) or signature verification (during decryption). During the signature verification process the specified User ID restricts the public keys from the public keyring which can be used for the verification. If no User ID is specified for the signature verficiation then any public key in the public keyring can be used for the verification. Can also be only a part of a user ID. For example, 
 if the user ID is "Test User &lt;test@camel.com&gt;" then you can use the part "Test User" or "&lt;test@camel.com&gt;" to address the User ID. </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>signatureKeyUserids</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>List&lt;String&gt;</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>null</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <strong>Since Camel 2.12.3</strong>; optional list of User IDs of the key in the PGP keyring used for signing (during encryption) or signature verification (during decryption). You can specify here the User IDs or parts of User IDs of several keys contained in the PGP keyring.  If you just have one User ID, then you can also use the option <code>keyUserid</code>. The User ID specified in <code>keyUserid</code> and the User IDs in <code>keyUserids</code> will be merged together and the corresponding keys will 
 be used for the signing or signature verification. If the specified User IDs reference several keys then for each key a signature is added to the PGP result during the encryption-signing process. In the decryption-verifying process the list of User IDs restricts the list of public keys which can be used for signature verification. If the list of User IDs is empty then any public key in the public keyring can be used for the signature verification.  </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>signaturePassword</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>String</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>null</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <strong>Since Camel 2.11.0</strong>; optional password used when opening the private key used for signing (during encryption). </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>signatureKeyFi
 leName</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>String</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>null</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <strong>Since Camel 2.11.0</strong>; optional filename of the keyring to use for signing (during encryption) or for signature verification (during decryption); must be accessible as a classpath resource (but you can specify a location in the file system by using the "file:" prefix). </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>signatureKeyRing</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>byte[]</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>null</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <strong>Since camel 2.12.1</strong>; signature keyring; you can not set the signatureKeyFileName and signatureKeyRing at the same time. </p></td></tr>
 <tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>algorithm</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>int</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>SymmetricKeyAlgorithmTags.CAST5</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <strong>Since camel 2.12.2</strong>; symmetric key encryption algorithm; possible values are defined in <code>org.bouncycastle.bcpg.SymmetricKeyAlgorithmTags</code>; for example 2 (= TRIPLE DES), 3 (= CAST5), 4 (= BLOWFISH), 6 (= DES), 7 (= AES_128). Only relevant for encrypting. </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>compressionAlgorithm</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>int</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>CompressionAlgorithmTags.ZIP</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <strong>Since camel 2.12.2</strong>; c
 ompression algorithm; possible values are defined in <code>org.bouncycastle.bcpg.CompressionAlgorithmTags</code>; for example 0 (= UNCOMPRESSED), 1 (= ZIP), 2 (= ZLIB), 3 (= BZIP2). Only relevant for encrypting. </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>hashAlgorithm</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>int</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>HashAlgorithmTags.SHA1</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <strong>Since camel 2.12.2</strong>: signature hash algorithm; possible values are defined in <code>org.bouncycastle.bcpg.HashAlgorithmTags</code>; for example 2 (= SHA1), 8 (= SHA256), 9 (= SHA384), 10 (= SHA512), 11 (=SHA224). Only relevant for signing. </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>armored</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>boolean</code> </p></td><td cols
 pan="1" rowspan="1" class="confluenceTd"><p> <code>false</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> This option will cause PGP to base64 encode the encrypted text, making it available for copy/paste, etc. </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>integrity</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>boolean</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>true</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> Adds an integrity check/sign into the encryption file. </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>passphraseAccessor</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <a shape="rect" class="external-link" href="https://github.com/apache/camel/blob/master/components/camel-crypto/src/main/java/org/apache/camel/converter/crypto/PGPPassphraseAccessor.java" rel="nofollow">PGPPassphraseAccessor</a
 > </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>null</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <strong>Since Camel 2.12.2</strong>; provides passphrases corresponding to user Ids.  If no passpharase can be found from the option <code>password</code> or <code>signaturePassword</code> and from the headers <code>CamelPGPDataFormatKeyPassword</code> or <code>CamelPGPDataFormatSignatureKeyPassword</code> then the passphrase is fetched from the passphrase accessor. You provide a bean which implements the interface <a shape="rect" class="external-link" href="https://github.com/apache/camel/blob/master/components/camel-crypto/src/main/java/org/apache/camel/converter/crypto/PGPPassphraseAccessor.java" rel="nofollow">PGPPassphraseAccessor</a>. A default implementation is given by <a shape="rect" class="external-link" href="https://github.com/apache/camel/blob/master/components/camel-crypto/src/main/java/org/apache/camel/converter/crypto/Default
 PGPPassphraseAccessor.java" rel="nofollow">DefaultPGPPassphraseAccessor</a>.  The passphrase accessor is especially useful in the decrypt case; see chapter 'PGP Decrypting/Verifying of Messages Encrypted/Signed by Different Private/Public Keys'  below. </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>signatureVerificationOption</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>String</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>"optional"</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <strong>Since camel 2.13.0</strong>: controls the behavior for verifying the signature during unmarshaling. There are three values possible:</p>
+<ul><li><code>"optional"</code>: The PGP message may or may not contain signatures; if it does contain signatures, then a signature verification is executed. Use the constant PGPKeyAccessDataFormat.SIGNATURE_VERIFICATION_OPTION_OPTIONAL.</li><li><code>"required"</code>: The PGP message must contain at least one signature; if this is not the case an exception (PGPException) is thrown.  A signature verification is executed. Use the constant PGPKeyAccessDataFormat.SIGNATURE_VERIFICATION_OPTION_REQUIRED.</li><li><code>"ignore"</code>: Contained signatures in the PGP message are ignored; no signature verification is executed. Use the constant PGPKeyAccessDataFormat.SIGNATURE_VERIFICATION_OPTION_IGNORE.</li><li><code>"no_signature_allowed"</code>: The PGP message must not contain a signature; otherwize an exception (PGPException) is thrown. Use the constant PGPKeyAccessDataFormat.SIGNATURE_VERIFICATION_OPTION_NO_SIGNATURE_ALLOWED.</li></ul>
+</td></tr></tbody></table>
 <h3 id="BookInOnePage-PGPDataFormatMessageHeaders">PGPDataFormat Message Headers</h3><p>You can override the PGPDataFormat options by applying below headers into message dynamically.</p>&#160;<div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Name</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Type</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Description</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>CamelPGPDataFormatKeyFileName</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>String</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Since Camel 2.11.0</strong>; filename of the keyring; will override existing setting directly on the PGPDataFormat.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>CamelPGPDataFormatEncryptionKeyRing</code></p></td><td colspan="1" rowspan="1" class="confluen
 ceTd"><p><code>byte[]</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Since Camel 2.12.1</strong>; the encryption keyring; will override existing setting directly on the PGPDataFormat.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>CamelPGPDataFormatKeyUserid</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>String</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Since Camel 2.11.0</strong>; the User ID of the key in the PGP keyring; will override existing setting directly on the PGPDataFormat.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>CamelPGPDataFormatKeyUserids</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>List&lt;String&gt;</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Since camel 2.12.2</strong>: the User IDs of the key in the PGP keyring; will override existing setting directly on the PG
 PDataFormat.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>CamelPGPDataFormatKeyPassword</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>String</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Since Camel 2.11.0</strong>; password used when opening the private key; will override existing setting directly on the PGPDataFormat.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>CamelPGPDataFormatSignatureKeyFileName</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>String</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Since Camel 2.11.0</strong>; filename of the signature keyring; will override existing setting directly on the PGPDataFormat.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>CamelPGPDataFormatSignatureKeyRing</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>byte[]</cod
 e></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Since Camel 2.12.1</strong>; the signature keyring; will override existing setting directly on the PGPDataFormat.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>CamelPGPDataFormatSignatureKeyUserid</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>String</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Since Camel 2.11.0</strong>; the User ID of the signature key in the PGP keyring; will override existing setting directly on the PGPDataFormat.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">CamelPGPDataFormatSignatureKeyUserids</td><td colspan="1" rowspan="1" class="confluenceTd">List&lt;String&gt;</td><td colspan="1" rowspan="1" class="confluenceTd"><strong>Since Camel 2.12.3</strong>; the User IDs of the signature keys in the PGP keyring; will override existing setting directly on the PGPDataFormat.</td></tr><tr><td c
 olspan="1" rowspan="1" class="confluenceTd"><p><code>CamelPGPDataFormatSignatureKeyPassword</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>String</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Since Camel 2.11.0</strong>; password used when opening the signature private key; will override existing setting directly on the PGPDataFormat.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>CamelPGPDataFormatEncryptionAlgorithm</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>int</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Since Camel 2.12.2</strong>; symmetric key encryption algorithm; will override existing setting directly on the PGPDataFormat.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>CamelPGPDataFormatSignatureHashAlgorithm</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>int</code></p></td><td c
 olspan="1" rowspan="1" class="confluenceTd"><p><strong>Since Camel 2.12.2</strong>; signature hash algorithm; will override existing setting directly on the PGPDataFormat.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>CamelPGPDataFormatCompressionAlgorithm</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>int</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Since Camel 2.12.2</strong>; compression algorithm; will override existing setting directly on the PGPDataFormat.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">CamelPGPDataFormatNumberOfEncryptionKeys</td><td colspan="1" rowspan="1" class="confluenceTd">Integer</td><td colspan="1" rowspan="1" class="confluenceTd"><strong>Since</strong>&#160;<strong>Camel 2.12.3;&#160; </strong>number of public keys used for encrypting the symmectric key, set by PGPDataFormat during encryptiion process</td></tr><tr><td colspan="1" rowspan="1" class="c
 onfluenceTd">CamelPGPDataFormatNumberOfSigningKeys</td><td colspan="1" rowspan="1" class="confluenceTd">Integer</td><td colspan="1" rowspan="1" class="confluenceTd"><strong>Since</strong>&#160;<strong>Camel 2.12.3; </strong>number of private keys used for creating signatures, set by PGPDataFormat during signing process</td></tr></tbody></table></div><h3 id="BookInOnePage-EncryptingwithPGPDataFormat">Encrypting with PGPDataFormat</h3><p>The following sample uses the popular PGP format for encrypting/decrypting files using the <a shape="rect" class="external-link" href="http://www.bouncycastle.org/java.html" rel="nofollow">Bouncy Castle Java libraries</a>:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
 <script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[
 // Public Key FileName
@@ -14157,7 +14161,7 @@ from(&quot;direct:start&quot;)
   &lt;!-- use the same version as your Camel core version --&gt;
 &lt;/dependency&gt;
 ]]></script>
-</div></div><h3 id="BookInOnePage-SeeAlso.8">See Also</h3><ul><li><a shape="rect" href="data-format.html">Data Format</a></li><li><a shape="rect" href="crypto-digital-signatures.html">Crypto (Digital Signatures)</a></li><li><a shape="rect" class="external-link" href="http://www.bouncycastle.org/java.html" rel="nofollow">http://www.bouncycastle.org/java.html</a></li></ul><p>Since&#160;<strong>Camel 2.12.3.</strong></p>
+</div></div><h3 id="BookInOnePage-SeeAlso.8">See Also</h3><ul><li><a shape="rect" href="data-format.html">Data Format</a></li><li><a shape="rect" href="crypto-digital-signatures.html">Crypto (Digital Signatures)</a></li><li><a shape="rect" class="external-link" href="http://www.bouncycastle.org/java.html" rel="nofollow">http://www.bouncycastle.org/java.html</a></li></ul>
 <h2 id="BookInOnePage-SyslogDataFormat">Syslog DataFormat</h2>
 <p><strong>Available as of Camel 2.6</strong></p>
 
@@ -15552,7 +15556,7 @@ public class MyDynamicRouter {
 
 <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-RecipientList">Recipient List</h3><p>The <a shape="rect" class="external-link" href="http://www.enterpriseintegrationpatterns.com/RecipientList.html" rel="nofollow">Recipient List</a> from the <a shape="rect" href="enterprise-integration-patterns.html">EIP patterns</a> allows you to route messages to a number of dynamically specified recipients.</p><p><img class="confluence-embedded-image confluence-external-resource" src="http://www.enterpriseintegrationpatterns.com/img/RecipientList.gif" data-image-src="http://www.enterpriseintegrationpatterns.com/img/RecipientList.gif"></p><p>The recipients will receive a copy of the <strong>same</strong> <a shape="rect" href="exchange.html">Exchange</a>, and Camel will execute them sequentially.</p><h3 id="BookInOnePage-Options.11">Options</h3><div class="confluenceTableSmall">
-<table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p> Name </p></th><th colspan="1" rowspan="1" class="confluenceTh"><p> Default Value </p></th><th colspan="1" rowspan="1" class="confluenceTh"><p> Description </p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>delimiter</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>,</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> Delimiter used if the <a shape="rect" href="expression.html" title="Expression">Expression</a> returned multiple endpoints. </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>strategyRef</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>&#160;</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> An <a shape="rect" class="external-link" href="http://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/processor/aggregate/AggregationStrategy.html
 ">AggregationStrategy</a> that will assemble the replies from recipients into a single outgoing message from the <a shape="rect" href="recipient-list.html" title="Recipient List">Recipient List</a>. By default Camel will use the last reply as the outgoing message. From <strong>Camel 2.12</strong> onwards you can also use a POJO as the <code>AggregationStrategy</code>, see the <a shape="rect" href="aggregator2.html" title="Aggregator2">Aggregate</a> page for more details. </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>strategyMethodName</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>&#160;</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <strong>Camel 2.12:</strong> This option can be used to explicit declare the method name to use, when using POJOs as the <code>AggregationStrategy</code>. See the <a shape="rect" href="aggregator2.html" title="Aggregator2">Aggregate</a> page for more details. </p></td></tr><tr><td colspan
 ="1" rowspan="1" class="confluenceTd"><p> <code>strategyMethodAllowNull</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>false</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <strong>Camel 2.12:</strong> If this option is <code>false</code> then the aggregate method is not used if there was no data to enrich. If this option is <code>true</code> then <code>null</code> values is used as the <code>oldExchange</code> (when no data to enrich), when using POJOs as the <code>AggregationStrategy</code>. See the <a shape="rect" href="aggregator2.html" title="Aggregator2">Aggregate</a> page for more details. </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>parallelProcessing</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>false</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <strong>Camel 2.2:</strong> If enabled, messages are sent to the recipients concurrently. Note tha
 t the calling thread will still wait until all messages have been fully processed before it continues; it's the sending and processing of replies from recipients which happens in parallel. </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>executorServiceRef</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>&#160;</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <strong>Camel 2.2:</strong> A custom <a shape="rect" href="threading-model.html" title="Threading Model">Thread Pool</a> to use for parallel processing. Note that enabling this option implies parallel processing, so you need not enable that option as well. </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>stopOnException</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>false</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <strong>Camel 2.2:</strong> Whether to immediately stop processing when an e
 xception occurs. If disabled, Camel will send the message to all recipients regardless of any individual failures. You can process exceptions in an <a shape="rect" class="external-link" href="http://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/processor/aggregate/AggregationStrategy.html">AggregationStrategy</a> implementation, which supports full control of error handling. </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>ignoreInvalidEndpoints</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>false</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <strong>Camel 2.3:</strong> Whether to ignore an endpoint URI that could not be resolved. If disabled, Camel will throw an exception identifying the invalid endpoint URI. </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>streaming</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>false</code> </
 p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <strong>Camel 2.5:</strong> If enabled, Camel will process replies out-of-order - that is, in the order received in reply from each recipient. If disabled, Camel will process replies in the same order as specified by the <a shape="rect" href="expression.html" title="Expression">Expression</a>. </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>timeout</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>&#160;</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <strong>Camel 2.5:</strong> Specifies a processing timeout milliseconds. If the <a shape="rect" href="recipient-list.html" title="Recipient List">Recipient List</a> hasn't been able to send and process all replies within this timeframe, then the timeout triggers and the <a shape="rect" href="recipient-list.html" title="Recipient List">Recipient List</a> breaks out, with message flow continuing to the next element. Not
 e that if you provide a <a shape="rect" class="external-link" href="http://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/processor/aggregate/TimeoutAwareAggregationStrategy.html">TimeoutAwareAggregationStrategy</a>, its <code>timeout</code> method is invoked before breaking out. <strong>Beware:</strong> If the timeout is reached with running tasks still remaining, certain tasks for which it is difficult for Camel to shut down in a graceful manner may continue to run.  So use this option with a bit of care.  We may be able to improve this functionality in future Camel releases. </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>onPrepareRef</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>&#160;</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <strong>Camel 2.8:</strong> A custom <a shape="rect" href="processor.html" title="Processor">Processor</a> to prepare the copy of the <a shape="rect" href="exchange.h
 tml" title="Exchange">Exchange</a> each recipient will receive. This allows you to perform arbitrary transformations, such as deep-cloning the message payload (or any other custom logic). </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>shareUnitOfWork</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>false</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <strong>Camel 2.8:</strong> Whether the unit of work should be shared. See <a shape="rect" href="splitter.html#Splitter-Sharingunitofwork">the same option on Splitter</a> for more details. </p></td></tr></tbody></table>
+<table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p> Name </p></th><th colspan="1" rowspan="1" class="confluenceTh"><p> Default Value </p></th><th colspan="1" rowspan="1" class="confluenceTh"><p> Description </p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>delimiter</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>,</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> Delimiter used if the <a shape="rect" href="expression.html" title="Expression">Expression</a> returned multiple endpoints. <strong>Camel 2.13</strong> can be disabled using "false" </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>strategyRef</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>&#160;</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> An <a shape="rect" class="external-link" href="http://camel.apache.org/maven/current/camel-core/apidocs/org
 /apache/camel/processor/aggregate/AggregationStrategy.html">AggregationStrategy</a> that will assemble the replies from recipients into a single outgoing message from the <a shape="rect" href="recipient-list.html" title="Recipient List">Recipient List</a>. By default Camel will use the last reply as the outgoing message. From <strong>Camel 2.12</strong> onwards you can also use a POJO as the <code>AggregationStrategy</code>, see the <a shape="rect" href="aggregator2.html" title="Aggregator2">Aggregate</a> page for more details. </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>strategyMethodName</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>&#160;</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <strong>Camel 2.12:</strong> This option can be used to explicit declare the method name to use, when using POJOs as the <code>AggregationStrategy</code>. See the <a shape="rect" href="aggregator2.html" title="Aggregator2">Aggregat
 e</a> page for more details. </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>strategyMethodAllowNull</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>false</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <strong>Camel 2.12:</strong> If this option is <code>false</code> then the aggregate method is not used if there was no data to enrich. If this option is <code>true</code> then <code>null</code> values is used as the <code>oldExchange</code> (when no data to enrich), when using POJOs as the <code>AggregationStrategy</code>. See the <a shape="rect" href="aggregator2.html" title="Aggregator2">Aggregate</a> page for more details. </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>parallelProcessing</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>false</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <strong>Camel 2.2:</strong> If enabled, 
 messages are sent to the recipients concurrently. Note that the calling thread will still wait until all messages have been fully processed before it continues; it's the sending and processing of replies from recipients which happens in parallel. </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>executorServiceRef</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>&#160;</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <strong>Camel 2.2:</strong> A custom <a shape="rect" href="threading-model.html" title="Threading Model">Thread Pool</a> to use for parallel processing. Note that enabling this option implies parallel processing, so you need not enable that option as well. </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>stopOnException</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>false</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <strong>Camel 2.2:
 </strong> Whether to immediately stop processing when an exception occurs. If disabled, Camel will send the message to all recipients regardless of any individual failures. You can process exceptions in an <a shape="rect" class="external-link" href="http://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/processor/aggregate/AggregationStrategy.html">AggregationStrategy</a> implementation, which supports full control of error handling. </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>ignoreInvalidEndpoints</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>false</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <strong>Camel 2.3:</strong> Whether to ignore an endpoint URI that could not be resolved. If disabled, Camel will throw an exception identifying the invalid endpoint URI. </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>streaming</code> </p></td><td colspan="1" 
 rowspan="1" class="confluenceTd"><p> <code>false</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <strong>Camel 2.5:</strong> If enabled, Camel will process replies out-of-order - that is, in the order received in reply from each recipient. If disabled, Camel will process replies in the same order as specified by the <a shape="rect" href="expression.html" title="Expression">Expression</a>. </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>timeout</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>&#160;</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <strong>Camel 2.5:</strong> Specifies a processing timeout milliseconds. If the <a shape="rect" href="recipient-list.html" title="Recipient List">Recipient List</a> hasn't been able to send and process all replies within this timeframe, then the timeout triggers and the <a shape="rect" href="recipient-list.html" title="Recipient List">Recipient List</a> breaks 
 out, with message flow continuing to the next element. Note that if you provide a <a shape="rect" class="external-link" href="http://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/processor/aggregate/TimeoutAwareAggregationStrategy.html">TimeoutAwareAggregationStrategy</a>, its <code>timeout</code> method is invoked before breaking out. <strong>Beware:</strong> If the timeout is reached with running tasks still remaining, certain tasks for which it is difficult for Camel to shut down in a graceful manner may continue to run.  So use this option with a bit of care.  We may be able to improve this functionality in future Camel releases. </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>onPrepareRef</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>&#160;</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <strong>Camel 2.8:</strong> A custom <a shape="rect" href="processor.html" title="Processor">Processor</a> t
 o prepare the copy of the <a shape="rect" href="exchange.html" title="Exchange">Exchange</a> each recipient will receive. This allows you to perform arbitrary transformations, such as deep-cloning the message payload (or any other custom logic). </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>shareUnitOfWork</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>false</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <strong>Camel 2.8:</strong> Whether the unit of work should be shared. See <a shape="rect" href="splitter.html#Splitter-Sharingunitofwork">the same option on Splitter</a> for more details. </p></td></tr></tbody></table>
 </div><h4 id="BookInOnePage-StaticRecipientList">Static Recipient List</h4><p>The following example shows how to route a request from an input <strong>queue:a</strong> endpoint to a static list of destinations</p><p><strong>Using Annotations</strong><br clear="none"> You can use the <a shape="rect" href="recipientlist-annotation.html">RecipientList Annotation</a> on a POJO to create a Dynamic Recipient List. For more details see the <a shape="rect" href="bean-integration.html">Bean Integration</a>.</p><p><strong>Using the <a shape="rect" href="fluent-builders.html">Fluent Builders</a></strong></p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
 <script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[
 RouteBuilder builder = new RouteBuilder() {
@@ -16381,18 +16385,18 @@ class StringAggregationStrategy implemen
 class ArrayListAggregationStrategy implements AggregationStrategy {
 
     public Exchange aggregate(Exchange oldExchange, Exchange newExchange) {
-	Object newBody = newExchange.getIn().getBody();
-	ArrayList&lt;Object&gt; list = null;
+		Object newBody = newExchange.getIn().getBody();
+		ArrayList&lt;Object&gt; list = null;
         if (oldExchange == null) {
-		list = new ArrayList&lt;Object&gt;();
-		list.add(newBody);
-		newExchange.getIn().setBody(list);
-		return newExchange;
+			list = new ArrayList&lt;Object&gt;();
+			list.add(newBody);
+			newExchange.getIn().setBody(list);
+			return newExchange;
         } else {
 	        list = oldExchange.getIn().getBody(ArrayList.class);
-		list.add(newBody);
-		return oldExchange;
-	}
+			list.add(newBody);
+			return oldExchange;
+		}
     }
 }
 ]]></script>
@@ -16624,7 +16628,7 @@ public final class MyListOfNumbersStrate
                             <p>You can use POJOs as AggregationStrategy with the other <a shape="rect" href="eip.html">EIP</a>s that supports aggregation, such as <a shape="rect" href="splitter.html">Splitter</a>, <a shape="rect" href="recipient-list.html">Recipient List</a>, etc.</p>
                     </div>
     </div>
-<p>To use the <code>AggregationStrategy</code> you had to implement the <code>org.apache.camel.processor.aggregate.AggregationStrategy</code> interface, which means your logic would be tied to the Camel API. From <strong>Camel 2.12</strong> onwards you can use a POJO for the logic and let Camel adapt to your POJO. To use a POJO a convention must be followed:</p><ul class="alternate"><li>there must be a public method to use</li><li>the method must not be void</li><li>the method can be static or non-static</li><li>the method must have 2 or more parameters</li><li>the parameters is paired so the first 50% is applied to the <code>oldExchnage</code> and the reminder 50% is for the <code>newExchange</code></li><li>.. meaning that there must be an equal number of parameters, eg 2, 4, 6 etc.</li></ul><p>The paired methods is expected to be ordered as follows:</p><ul class="alternate"><li>the first parameter is the message body</li><li>the 2nd parameter is a Map of the headers</li><li>the 3r
 d parameter is a Map of the Exchange properties</li></ul><p>This convention is best explained with some examples.</p><p>In the method below, we have only 2 parameters, so the 1st parameter is the body of the <code>oldExchange</code>, and the 2nd is paired to the body of the <code>newExchange</code>:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<p>To use the <code>AggregationStrategy</code> you had to implement the <code>org.apache.camel.processor.aggregate.AggregationStrategy</code> interface, which means your logic would be tied to the Camel API. From <strong>Camel 2.12</strong> onwards you can use a POJO for the logic and let Camel adapt to your POJO. To use a POJO a convention must be followed:</p><ul class="alternate"><li>there must be a public method to use</li><li>the method must not be void</li><li>the method can be static or non-static</li><li>the method must have 2 or more parameters</li><li>the parameters is paired so the first 50% is applied to the <code>oldExchange</code> and the reminder 50% is for the <code>newExchange</code></li><li>.. meaning that there must be an equal number of parameters, eg 2, 4, 6 etc.</li></ul><p>The paired methods is expected to be ordered as follows:</p><ul class="alternate"><li>the first parameter is the message body</li><li>the 2nd parameter is a Map of the headers</li><li>the 3r
 d parameter is a Map of the Exchange properties</li></ul><p>This convention is best explained with some examples.</p><p>In the method below, we have only 2 parameters, so the 1st parameter is the body of the <code>oldExchange</code>, and the 2nd is paired to the body of the <code>newExchange</code>:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
 <script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[public String append(String existing, String next) {
   return existing + next;
 }
@@ -17675,66 +17679,38 @@ And the same example in Spring XML is:</
 
 <h3 id="BookInOnePage-SeeAlso.11">See Also</h3>
 <ul class="alternate"><li><a shape="rect" href="throttler.html">Throttler</a></li><li><a shape="rect" href="aggregator.html">Aggregator</a></li></ul>
-<h3 id="BookInOnePage-Delayer">Delayer</h3>
-
-<p>The Delayer Pattern allows you to delay the delivery of messages to some destination.</p>
-
-    <div class="aui-message hint shadowed information-macro">
+<h3 id="BookInOnePage-Delayer">Delayer</h3><p>The Delayer Pattern allows you to delay the delivery of messages to some destination.</p>    <div class="aui-message hint shadowed information-macro">
                             <span class="aui-icon icon-hint">Icon</span>
                 <div class="message-content">
-                            
-<p>The expression is a value in millis to wait from the current time, so the expression should just be <code>3000</code>.<br clear="none">
-However you can use a long value for a fixed value to indicate the delay in millis.<br clear="none">
-See the Spring DSL samples for Delayer.</p>
+                            <p>The expression is a value in millis to wait from the current time, so the expression should just be <code>3000</code>.<br clear="none"> However you can use a long value for a fixed value to indicate the delay in millis.<br clear="none"> See the Spring DSL samples for Delayer.</p>
                     </div>
     </div>
-
-
     <div class="aui-message problem shadowed information-macro">
                     <p class="title">Using Delayer in Java DSL</p>
                             <span class="aui-icon icon-problem">Icon</span>
                 <div class="message-content">
-                            
-<p>See this ticket: <a shape="rect" class="external-link" href="https://issues.apache.org/jira/browse/CAMEL-2654">https://issues.apache.org/jira/browse/CAMEL-2654</a></p>
+                            <p>See this ticket: <a shape="rect" class="external-link" href="https://issues.apache.org/jira/browse/CAMEL-2654">https://issues.apache.org/jira/browse/CAMEL-2654</a></p>
                     </div>
     </div>
-
-
-<h3 id="BookInOnePage-Options.16">Options</h3>
-
-<div class="confluenceTableSmall">
+<h3 id="BookInOnePage-Options.16">Options</h3><div class="confluenceTableSmall">
 <table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p> Name </p></th><th colspan="1" rowspan="1" class="confluenceTh"><p> Default Value </p></th><th colspan="1" rowspan="1" class="confluenceTh"><p> Description </p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>asyncDelayed</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>false</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <strong>Camel 2.4:</strong> If enabled then delayed messages happens asynchronously using a scheduled thread pool. </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>executorServiceRef</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>&#160;</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>  <strong>Camel 2.4:</strong> Refers to a custom <a shape="rect" href="threading-model.html" title="Threading Model">Thread Pool</a> to be used if <code>asyncDel
 ay</code> has been enabled. </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>callerRunsWhenRejected</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>true</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <strong>Camel 2.4:</strong> Is used if <code>asyncDelayed</code> was enabled. This controls if the caller thread should execute the task if the thread pool rejected the task. </p></td></tr></tbody></table>
-</div>
-
-<p><strong>Using the <a shape="rect" href="fluent-builders.html">Fluent Builders</a></strong></p>
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+</div><p><strong>Using the <a shape="rect" href="fluent-builders.html">Fluent Builders</a></strong></p><p>The example below will delay all messages received on <strong>seda:b</strong> 1 second before sending them to <strong><a shape="rect" class="external-link" href="http://mockresult" rel="nofollow">mock:result</a></strong>.</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
 <script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[
 from(&quot;seda:b&quot;).delay(1000).to(&quot;mock:result&quot;);
 ]]></script>
-</div></div>
-
-<p>So the above example will delay all messages received on <strong>seda:b</strong> 1 second before sending them to <strong>mock:result</strong>. </p>
-
-<p>You can of course use many different <a shape="rect" href="expression.html">Expression</a> languages such as <a shape="rect" href="xpath.html">XPath</a>, <a shape="rect" href="xquery.html">XQuery</a>, <a shape="rect" href="sql.html">SQL</a> or various <a shape="rect" href="scripting-languages.html">Scripting Languages</a>.  You can just delay things a fixed amount of time from the point at which the delayer receives the message. For example to delay things 2 seconds</p>
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[
-delayer(2000)
+</div></div><p>You can just delay things a fixed amount of time from the point at which the delayer receives the message. For example to delay things 2 seconds</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[delayer(2000)
 ]]></script>
-</div></div>
-
-<p>The above assume that the delivery order is maintained and that the messages are delivered in delay order. If you want to reorder the messages based on delivery time, you can use the <a shape="rect" href="resequencer.html">Resequencer</a> with this pattern. For example</p>
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[
-from(&quot;activemq:someQueue&quot;).resequencer(header(&quot;MyDeliveryTime&quot;)).delay(&quot;MyRedeliveryTime&quot;).to(&quot;activemq:aDelayedQueue&quot;);
+</div></div><p>The above assume that the delivery order is maintained and that the messages are delivered in delay order. If you want to reorder the messages based on delivery time, you can use the <a shape="rect" href="resequencer.html">Resequencer</a> with this pattern. For example</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[from(&quot;activemq:someQueue&quot;).resequencer(header(&quot;MyDeliveryTime&quot;)).delay(&quot;MyRedeliveryTime&quot;).to(&quot;activemq:aDelayedQueue&quot;);
 ]]></script>
-</div></div>
-
-<h4 id="BookInOnePage-SpringDSL.1">Spring DSL</h4>
-<p>The sample below demonstrates the delay in Spring DSL:</p>
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+</div></div><p>You can of course use many different <a shape="rect" href="expression.html">Expression</a> languages such as <a shape="rect" href="xpath.html">XPath</a>, <a shape="rect" href="xquery.html">XQuery</a>, <a shape="rect" href="sql.html">SQL</a> or various <a shape="rect" href="scripting-languages.html">Scripting Languages</a>. For example to delay the message for the time period specified in the header, use the following syntax:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[from(&quot;activemq:someQueue&quot;).delay(header(&quot;delayValue&quot;)).to(&quot;activemq:aDelayedQueue&quot;);
+]]></script>
+</div></div><p>And to delay processing using the <a shape="rect" href="simple.html">Simple</a> language you can use the following DSL:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[from(&quot;activemq:someQueue&quot;).delay(simple(&quot;${body.delayProperty}&quot;)).to(&quot;activemq:aDelayedQueue&quot;);
+]]></script>
+</div></div><h4 id="BookInOnePage-SpringDSL.1">Spring DSL</h4><p>The sample below demonstrates the delay in Spring DSL:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
 <script class="theme: Default; brush: xml; gutter: false" type="syntaxhighlighter"><![CDATA[
 &lt;bean id=&quot;myDelayBean&quot; class=&quot;org.apache.camel.processor.MyDelayCalcBean&quot;/&gt;
 
@@ -17762,30 +17738,11 @@ from(&quot;activemq:someQueue&quot;).res
     &lt;/route&gt;
 &lt;/camelContext&gt;
 ]]></script>
-</div></div>
-
-<p>For further examples of this pattern in use you could look at the <a shape="rect" class="external-link" href="http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/DelayerTest.java?view=markup">junit test case</a></p>
-
-<h3 id="BookInOnePage-Asynchronousdelaying.1">Asynchronous delaying</h3>
-<p><strong>Available as of Camel 2.4</strong></p>
-
-<p>You can let the <a shape="rect" href="delayer.html">Delayer</a> use non blocking asynchronous delaying, which means Camel will use a scheduler to schedule a task to be executed in the future. The task will then continue routing. This allows the caller thread to not block and be able to service other messages etc.</p>
-
-<h4 id="BookInOnePage-FromJavaDSL">From Java DSL</h4>
-<p>You use the <code>asyncDelayed()</code> to enable the async behavior.</p>
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[
-from(&quot;activemq:queue:foo&quot;).delay(1000).asyncDelayed().to(&quot;activemq:aDelayedQueue&quot;);
+</div></div><p>For further examples of this pattern in use you could look at the <a shape="rect" class="external-link" href="http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/DelayerTest.java?view=markup">junit test case</a></p><h3 id="BookInOnePage-Asynchronousdelaying.1">Asynchronous delaying</h3><p><strong>Available as of Camel 2.4</strong></p><p>You can let the <a shape="rect" href="delayer.html">Delayer</a> use non blocking asynchronous delaying, which means Camel will use a scheduler to schedule a task to be executed in the future. The task will then continue routing. This allows the caller thread to not block and be able to service other messages etc.</p><h4 id="BookInOnePage-FromJavaDSL">From Java DSL</h4><p>You use the <code>asyncDelayed()</code> to enable the async behavior.</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[from(&quot;activemq:queue:foo&quot;).delay(1000).asyncDelayed().to(&quot;activemq:aDelayedQueue&quot;);
 ]]></script>
-</div></div>
-
-<h4 id="BookInOnePage-FromSpringXML">From Spring XML</h4>
-<p>You use the <code>asyncDelayed="true"</code> attribute to enable the async behavior.</p>
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="theme: Default; brush: xml; gutter: false" type="syntaxhighlighter"><![CDATA[
-&lt;route&gt;
+</div></div><h4 id="BookInOnePage-FromSpringXML">From Spring XML</h4><p>You use the <code>asyncDelayed="true"</code> attribute to enable the async behavior.</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<script class="theme: Default; brush: xml; gutter: false" type="syntaxhighlighter"><![CDATA[&lt;route&gt;
    &lt;from uri=&quot;activemq:queue:foo&quot;/&gt;
    &lt;delay asyncDelayed=&quot;true&quot;&gt;
        &lt;constant&gt;1000&lt;/constant&gt;
@@ -17793,25 +17750,13 @@ from(&quot;activemq:queue:foo&quot;).del
    &lt;to uri=&quot;activemq:aDealyedQueue&quot;/&gt;
 &lt;/route&gt;
 ]]></script>
-</div></div>
-
-<h3 id="BookInOnePage-Creatingacustomdelay">Creating a custom delay</h3>
-
-<p>You can use an expression to determine when to send a message using something like this</p>
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[
-from(&quot;activemq:foo&quot;).
+</div></div><h3 id="BookInOnePage-Creatingacustomdelay">Creating a custom delay</h3><p>You can use an expression to determine when to send a message using something like this</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[from(&quot;activemq:foo&quot;).
   delay().method(&quot;someBean&quot;, &quot;computeDelay&quot;).
   to(&quot;activemq:bar&quot;);
 ]]></script>
-</div></div>
-
-<p>then the bean would look like this...</p>
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[
-public class SomeBean {
+</div></div><p>then the bean would look like this...</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[public class SomeBean {
   public long computeDelay() { 
      long delay = 0;
      // use java code to compute a delay value in millis
@@ -17819,15 +17764,9 @@ public class SomeBean {
  }
 }
 ]]></script>
-</div></div>
-
-<h4 id="BookInOnePage-UsingThisPattern.26">Using This Pattern</h4>
+</div></div><p></p><h4 id="BookInOnePage-UsingThisPattern.26">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-SeeAlso.12">See Also</h3>
-
-<ul><li><a shape="rect" href="delay-interceptor.html">Delay Interceptor</a></li></ul>
+<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-SeeAlso.12">See Also</h3><ul><li><a shape="rect" href="delay-interceptor.html">Delay Interceptor</a></li></ul>
 <h3 id="BookInOnePage-LoadBalancer">Load Balancer</h3>
 
 <p>The Load Balancer Pattern allows you to delegate to one of a number of endpoints using a variety of different load balancing policies.</p>
@@ -19775,32 +19714,15 @@ from(&quot;direct:start&quot;)
 <h4 id="BookInOnePage-UsingThisPattern.42">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-TransactionalClient">Transactional Client</h3>
-<p>Camel recommends supporting the <a shape="rect" class="external-link" href="http://www.enterpriseintegrationpatterns.com/TransactionalClient.html" rel="nofollow">Transactional Client</a> from the <a shape="rect" href="enterprise-integration-patterns.html">EIP patterns</a> using spring transactions.</p>
-
-<p><img class="confluence-embedded-image confluence-external-resource" src="http://www.enterpriseintegrationpatterns.com/img/TransactionalClientSolution.gif" data-image-src="http://www.enterpriseintegrationpatterns.com/img/TransactionalClientSolution.gif"></p>
-
-<p>Transaction Oriented Endpoints (<a shape="rect" href="what-is-a-camel-toe.html">Camel Toes</a>) like <a shape="rect" href="jms.html">JMS</a> support using a transaction for both inbound and outbound message exchanges.  Endpoints that support transactions will participate in the current transaction context that they are called from.</p>
-
-    <div class="aui-message success shadowed information-macro">
+<h3 id="BookInOnePage-TransactionalClient">Transactional Client</h3><p>Camel recommends supporting the <a shape="rect" class="external-link" href="http://www.enterpriseintegrationpatterns.com/TransactionalClient.html" rel="nofollow">Transactional Client</a> from the <a shape="rect" href="enterprise-integration-patterns.html">EIP patterns</a> using spring transactions.</p><p><img class="confluence-embedded-image confluence-external-resource" src="http://www.enterpriseintegrationpatterns.com/img/TransactionalClientSolution.gif" data-image-src="http://www.enterpriseintegrationpatterns.com/img/TransactionalClientSolution.gif"></p><p>Transaction Oriented Endpoints (<a shape="rect" href="what-is-a-camel-toe.html">Camel Toes</a>) like <a shape="rect" href="jms.html">JMS</a> support using a transaction for both inbound and outbound message exchanges. Endpoints that support transactions will participate in the current transaction context that they are called from.</p>    <div class="aui-mess
 age success shadowed information-macro">
                     <p class="title">Configuration of Redelivery</p>
                             <span class="aui-icon icon-success">Icon</span>
                 <div class="message-content">
-                            
-<p>The redelivery in transacted mode is <strong>not</strong> handled by Camel but by the backing system (the transaction manager). In such cases you should resort to the backing system how to configure the redelivery. </p>
+                            <p>The redelivery in transacted mode is <strong>not</strong> handled by Camel but by the backing system (the transaction manager). In such cases you should resort to the backing system how to configure the redelivery.</p>
                     </div>
     </div>
-
-
-<p>You should use the <a shape="rect" class="external-link" href="http://camel.apache.org/maven/current/camel-spring/apidocs/org/apache/camel/spring/SpringRouteBuilder.html">SpringRouteBuilder</a> to setup the routes since you will need to setup the spring context with the <a shape="rect" class="external-link" href="http://www.springframework.org/docs/api/org/springframework/transaction/support/TransactionTemplate.html" rel="nofollow">TransactionTemplate</a>s that will define the transaction manager configuration and policies.</p>
-
-<p>For inbound endpoint to be transacted, they normally need to be configured to use a Spring <a shape="rect" class="external-link" href="http://www.springframework.org/docs/api/org/springframework/transaction/PlatformTransactionManager.html" rel="nofollow">PlatformTransactionManager</a>.  In the case of the JMS component, this can be done by looking it up in the spring context.</p>
-
-<p>You first define needed object in the spring configuration.</p>
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="theme: Default; brush: xml; gutter: false" type="syntaxhighlighter"><![CDATA[
-  &lt;bean id=&quot;jmsTransactionManager&quot; class=&quot;org.springframework.jms.connection.JmsTransactionManager&quot;&gt;
+<p>You should use the <a shape="rect" class="external-link" href="http://camel.apache.org/maven/current/camel-spring/apidocs/org/apache/camel/spring/SpringRouteBuilder.html">SpringRouteBuilder</a> to setup the routes since you will need to setup the spring context with the <a shape="rect" class="external-link" href="http://www.springframework.org/docs/api/org/springframework/transaction/support/TransactionTemplate.html" rel="nofollow">TransactionTemplate</a>s that will define the transaction manager configuration and policies.</p><p>For inbound endpoint to be transacted, they normally need to be configured to use a Spring <a shape="rect" class="external-link" href="http://www.springframework.org/docs/api/org/springframework/transaction/PlatformTransactionManager.html" rel="nofollow">PlatformTransactionManager</a>. In the case of the JMS component, this can be done by looking it up in the spring context.</p><p>You first define needed object in the spring configuration.</p><div class=
 "code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<script class="theme: Default; brush: xml; gutter: false" type="syntaxhighlighter"><![CDATA[  &lt;bean id=&quot;jmsTransactionManager&quot; class=&quot;org.springframework.jms.connection.JmsTransactionManager&quot;&gt;
     &lt;property name=&quot;connectionFactory&quot; ref=&quot;jmsConnectionFactory&quot; /&gt;
   &lt;/bean&gt;
   
@@ -19808,28 +19730,15 @@ from(&quot;direct:start&quot;)
     &lt;property name=&quot;brokerURL&quot; value=&quot;tcp://localhost:61616&quot;/&gt;
   &lt;/bean&gt;
 ]]></script>
-</div></div>
-
-<p>Then you look them up and use them to create the JmsComponent.</p>
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[
-  PlatformTransactionManager transactionManager = (PlatformTransactionManager) spring.getBean(&quot;jmsTransactionManager&quot;);
+</div></div><p>Then you look them up and use them to create the JmsComponent.</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[  PlatformTransactionManager transactionManager = (PlatformTransactionManager) spring.getBean(&quot;jmsTransactionManager&quot;);
   ConnectionFactory connectionFactory = (ConnectionFactory) spring.getBean(&quot;jmsConnectionFactory&quot;);
   JmsComponent component = JmsComponent.jmsComponentTransacted(connectionFactory, transactionManager);
   component.getConfiguration().setConcurrentConsumers(1);
   ctx.addComponent(&quot;activemq&quot;, component);
 ]]></script>
-</div></div>
-
-
-<h4 id="BookInOnePage-TransactionPolicies">Transaction Policies</h4>
-
-<p>Outbound endpoints will automatically enlist in the current transaction context.  But what if you do not want your outbound endpoint to enlist in the same transaction as your inbound endpoint?  The solution is to add a Transaction Policy to the processing route.  You first have to define transaction policies that you will be using.  The policies use a spring <a shape="rect" class="external-link" href="http://www.springframework.org/docs/api/org/springframework/transaction/support/TransactionTemplate.html" rel="nofollow">TransactionTemplate</a> under the covers for declaring the transaction demarcation to use.  So you will need to add something like the following to your spring xml:</p>
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="theme: Default; brush: xml; gutter: false" type="syntaxhighlighter"><![CDATA[
-  &lt;bean id=&quot;PROPAGATION_REQUIRED&quot; class=&quot;org.apache.camel.spring.spi.SpringTransactionPolicy&quot;&gt;
+</div></div><h4 id="BookInOnePage-TransactionPolicies">Transaction Policies</h4><p>Outbound endpoints will automatically enlist in the current transaction context. But what if you do not want your outbound endpoint to enlist in the same transaction as your inbound endpoint? The solution is to add a Transaction Policy to the processing route. You first have to define transaction policies that you will be using. The policies use a spring <a shape="rect" class="external-link" href="http://www.springframework.org/docs/api/org/springframework/transaction/support/TransactionTemplate.html" rel="nofollow">TransactionTemplate</a> under the covers for declaring the transaction demarcation to use. So you will need to add something like the following to your spring xml:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<script class="theme: Default; brush: xml; gutter: false" type="syntaxhighlighter"><![CDATA[  &lt;bean id=&quot;PROPAGATION_REQUIRED&quot; class=&quot;org.apache.camel.spring.spi.SpringTransactionPolicy&quot;&gt;
     &lt;property name=&quot;transactionManager&quot; ref=&quot;jmsTransactionManager&quot;/&gt;
   &lt;/bean&gt;
 
@@ -19838,68 +19747,36 @@ from(&quot;direct:start&quot;)
     &lt;property name=&quot;propagationBehaviorName&quot; value=&quot;PROPAGATION_REQUIRES_NEW&quot;/&gt;
   &lt;/bean&gt;
 ]]></script>
-</div></div>
-
-<p>Then in your <a shape="rect" class="external-link" href="http://camel.apache.org/maven/current/camel-spring/apidocs/org/apache/camel/spring/SpringRouteBuilder.html">SpringRouteBuilder</a>, you just need to create new SpringTransactionPolicy objects for each of the templates.</p>
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[
-public void configure() {
+</div></div><p>Then in your <a shape="rect" class="external-link" href="http://camel.apache.org/maven/current/camel-spring/apidocs/org/apache/camel/spring/SpringRouteBuilder.html">SpringRouteBuilder</a>, you just need to create new SpringTransactionPolicy objects for each of the templates.</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[public void configure() {
    ...
    Policy requried = bean(SpringTransactionPolicy.class, &quot;PROPAGATION_REQUIRED&quot;));
    Policy requirenew = bean(SpringTransactionPolicy.class, &quot;PROPAGATION_REQUIRES_NEW&quot;));
    ...
 }
 ]]></script>
-</div></div>
-
-<p>Once created, you can use the Policy objects in your processing routes:</p>
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[
-
-   // Send to bar in a new transaction
+</div></div><p>Once created, you can use the Policy objects in your processing routes:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[   // Send to bar in a new transaction
    from(&quot;activemq:queue:foo&quot;).policy(requirenew).to(&quot;activemq:queue:bar&quot;);
 
    // Send to bar without a transaction.
    from(&quot;activemq:queue:foo&quot;).policy(notsupported ).to(&quot;activemq:queue:bar&quot;);
 
 ]]></script>
-</div></div>
-
-<h4 id="BookInOnePage-OSGiBlueprint">OSGi Blueprint</h4>
-
-<p>If you are using <a shape="rect" href="using-osgi-blueprint-with-camel.html">OSGi Blueprint</a> then you most likely have to explicit declare a policy and refer to the policy from the transacted in the route.</p>
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="theme: Default; brush: xml; gutter: false" type="syntaxhighlighter"><![CDATA[
-  &lt;bean id=&quot;required&quot; class=&quot;org.apache.camel.spring.spi.SpringTransactionPolicy&quot;&gt;
+</div></div><h4 id="BookInOnePage-OSGiBlueprint">OSGi Blueprint</h4><p>If you are using <a shape="rect" href="using-osgi-blueprint-with-camel.html">OSGi Blueprint</a> then you most likely have to explicit declare a policy and refer to the policy from the transacted in the route.</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<script class="theme: Default; brush: xml; gutter: false" type="syntaxhighlighter"><![CDATA[  &lt;bean id=&quot;required&quot; class=&quot;org.apache.camel.spring.spi.SpringTransactionPolicy&quot;&gt;
     &lt;property name=&quot;transactionManager&quot; ref=&quot;jmsTransactionManager&quot;/&gt;
     &lt;property name=&quot;propagationBehaviorName&quot; value=&quot;PROPAGATION_REQUIRED&quot;/&gt;
   &lt;/bean&gt;
 ]]></script>
-</div></div>
-
-<p>And then refer to "required" from the route:</p>
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="theme: Default; brush: xml; gutter: false" type="syntaxhighlighter"><![CDATA[
-&lt;route&gt;

[... 1202 lines stripped ...]