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/12/05 13:20:49 UTC

svn commit: r931522 [2/7] - in /websites/production/camel/content: ./ cache/

Modified: websites/production/camel/content/book-component-appendix.html
==============================================================================
--- websites/production/camel/content/book-component-appendix.html (original)
+++ websites/production/camel/content/book-component-appendix.html Fri Dec  5 12:20:48 2014
@@ -391,17 +391,14 @@ droppable = false}
 <h3 id="BookComponentAppendix-URIFormat">URI Format</h3><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[aws-sqs://queue-name[?options]
 ]]></script>
-</div></div><p>The queue will be created if they don't already exists.<br clear="none"> You can append query options to the URI in the following format, ?options=value&amp;option2=value&amp;...</p><h3 id="BookComponentAppendix-URIOptions">URI Options</h3><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> Default Value </p></th><th colspan="1" rowspan="1" class="confluenceTh"><p> Context </p></th><th colspan="1" rowspan="1" class="confluenceTh"><p> Description </p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>amazonSQSClient </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>null</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> Shared </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> Reference to a <code>com.amazonaws.services.sqs.AmazonSQS</code> in the <a shape="rect" href="registr
 y.html">Registry</a>. </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>accessKey </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>null</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> Shared </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> Amazon AWS Access Key </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>secretKey </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>null</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> Shared </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> Amazon AWS Secret Key </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>amazonSQSEndpoint </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>null</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> Shared </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> The region with which the AWS-SQS client wants to 
 work with. Only works if Camel creates the AWS-SQS client, i.e., if you explicitly set amazonSQSClient, then this setting will have no effect. You would have to set it on the client you create directly </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>attributeNames </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>null</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> Consumer </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> A list of attributes to set in the <code>com.amazonaws.services.sqs.model.ReceiveMessageRequest</code>. </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>defaultVisibilityTimeout </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>null</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> Shared </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> The visibility timeout (in seconds) to set in the <code>com.amazonaws.services.sqs.mode
 l.CreateQueueRequest</code>. </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>deleteAfterRead </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>true</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> Consumer </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> Delete message from SQS after it has been read </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>deleteIfFiltered </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>true</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> Consumer </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <strong>Camel 2.12.2,2.13.0</strong> Whether or not to send the DeleteMessage to the SQS queue if an exchange fails to get through a filter. If 'false' and exchange does not make it through a Camel filter upstream in the route, then don't send DeleteMessage. </p></td></tr><tr><td colspan="1" rowspan="1" class="confluence
 Td"><p>maxMessagesPerPoll</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>null</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> Consumer </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> The maximum number of messages which can be received in one poll to set in the <code>com.amazonaws.services.sqs.model.ReceiveMessageRequest</code>. </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>visibilityTimeout </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>null</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> Shared </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> The duration (in seconds) that the received messages are hidden from subsequent retrieve requests after being retrieved by a ReceiveMessage request to set in the <code>com.amazonaws.services.sqs.model.SetQueueAttributesRequest</code>. This only make sense if its different from <code>defaultVisibilityTimeout</co
 de>. It changes the queue visibility timeout attribute permanently. </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>messageVisibilityTimeout </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>null</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> Consumer </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <strong>Camel 2.8:</strong> The duration (in seconds) that the received messages are hidden from subsequent retrieve requests after being retrieved by a ReceiveMessage request to set in the <code>com.amazonaws.services.sqs.model.ReceiveMessageRequest</code>. It does <strong>NOT</strong> change the queue visibility timeout attribute permanently. </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> extendMessageVisibility </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>false</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> Consumer </p></td><td colspan="1" ro
 wspan="1" class="confluenceTd"><p> <strong>Camel 2.10:</strong> If enabled then a scheduled background task will keep extending the message visibility on SQS. This is needed if it taks a long time to process the message. If set to true <code>defaultVisibilityTimeout</code> must be set.  See details at <a shape="rect" class="external-link" href="http://docs.amazonwebservices.com/AWSSimpleQueueService/latest/APIReference/Query_QueryChangeMessageVisibility.html" rel="nofollow">Amazon docs</a>. </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>maximumMessageSize </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>null</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> Shared </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <strong>Camel 2.8:</strong> The maximumMessageSize (in bytes) an SQS message can contain for this queue, to set in the <code>com.amazonaws.services.sqs.model.SetQueueAttributesRequest</code>. </p></td>
 </tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>messageRetentionPeriod </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>null</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> Shared </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <strong>Camel 2.8:</strong> The messageRetentionPeriod (in seconds) a message will be retained by SQS for this queue, to set in the <code>com.amazonaws.services.sqs.model.SetQueueAttributesRequest</code>. </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>policy </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>null</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> Shared </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <strong>Camel 2.8:</strong> The policy for this queue to set in the <code>com.amazonaws.services.sqs.model.SetQueueAttributesRequest</code>. </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><
 p>delaySeconds </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>null</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> Producer </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <strong>Camel 2.9.3:</strong> Delay sending messages for a number of seconds. </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>waitTimeSeconds </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>0</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> Producer </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <strong>Camel 2.11:</strong> Duration in seconds (0 to 20) that the ReceiveMessage action call will wait until a message is in the queue to include in the response. </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>receiveMessageWaitTimeSeconds </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>0</code> </p></td><td colspan="1" rowspan="1" class="confluenc
 eTd"><p> Shared </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <strong>Camel 2.11:</strong> If you do not specify WaitTimeSeconds in the request, the queue attribute ReceiveMessageWaitTimeSeconds is used to determine how long to wait. </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>queueOwnerAWSAccountId </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>null</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> Shared </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.12:</strong> Specify the queue owner aws account id when you need to connect the queue with different account owner. </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>region </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>null</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> Shared </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.12.3:</s
 trong> Specify the queue region which could be used with <code>queueOwnerAWSAccountId</code> to build the service URL. </p></td></tr></tbody></table></div>
-    <div class="aui-message hint shadowed information-macro">
+</div></div><p>The queue will be created if they don't already exists.<br clear="none"> You can append query options to the URI in the following format, ?options=value&amp;option2=value&amp;...</p><h3 id="BookComponentAppendix-URIOptions">URI Options</h3><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>Default Value</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Context</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Description</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>amazonSQSClient</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Shared</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Reference to a <code>com.amazonaws.services.sqs.AmazonSQS</code> in the <a shape="rect" href="registry.html">Regist
 ry</a>.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>accessKey</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Shared</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Amazon AWS Access Key</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>secretKey</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Shared</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Amazon AWS Secret Key</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>amazonSQSEndpoint</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Shared</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The region with which the AWS-SQS client wants to work with. Only works if Camel crea
 tes the AWS-SQS client, i.e., if you explicitly set amazonSQSClient, then this setting will have no effect. You would have to set it on the client you create directly</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>attributeNames</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Consumer</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>A list of attributes to set in the <code>com.amazonaws.services.sqs.model.ReceiveMessageRequest</code>.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>defaultVisibilityTimeout</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Shared</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The visibility timeout (in seconds) to set in the <code>com.amazonaws.services.sqs.model.CreateQueueRequest</code>.</p></td></tr><tr><td
  colspan="1" rowspan="1" class="confluenceTd"><p>deleteAfterRead</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>true</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Consumer</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Delete message from SQS after it has been read</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>deleteIfFiltered</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>true</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Consumer</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.12.2,2.13.0</strong> Whether or not to send the DeleteMessage to the SQS queue if an exchange fails to get through a filter. If 'false' and exchange does not make it through a Camel filter upstream in the route, then don't send DeleteMessage.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>maxMessagesPerPoll</p></td><td colspan="1" rowspan="1" cl
 ass="confluenceTd"><p><code>null</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Consumer</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The maximum number of messages which can be received in one poll to set in the <code>com.amazonaws.services.sqs.model.ReceiveMessageRequest</code>.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>visibilityTimeout</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Shared</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The duration (in seconds) that the received messages are hidden from subsequent retrieve requests after being retrieved by a ReceiveMessage request to set in the <code>com.amazonaws.services.sqs.model.SetQueueAttributesRequest</code>. This only make sense if its different from <code>defaultVisibilityTimeout</code>. It changes the queue visibility timeout attribute permanently.</p></td>
 </tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>messageVisibilityTimeout</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Consumer</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.8:</strong> The duration (in seconds) that the received messages are hidden from subsequent retrieve requests after being retrieved by a ReceiveMessage request to set in the <code>com.amazonaws.services.sqs.model.ReceiveMessageRequest</code>. It does <strong>NOT</strong> change the queue visibility timeout attribute permanently.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>extendMessageVisibility</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Consumer</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.10:</strong> If enabled then a scheduled
  background task will keep extending the message visibility on SQS. This is needed if it taks a long time to process the message. If set to true <code>defaultVisibilityTimeout</code> must be set. See details at <a shape="rect" class="external-link" href="http://docs.amazonwebservices.com/AWSSimpleQueueService/latest/APIReference/Query_QueryChangeMessageVisibility.html" rel="nofollow">Amazon docs</a>.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>maximumMessageSize</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Shared</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.8:</strong> The maximumMessageSize (in bytes) an SQS message can contain for this queue, to set in the <code>com.amazonaws.services.sqs.model.SetQueueAttributesRequest</code>.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>messageRetentionPeriod</p></td><td cols
 pan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Shared</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.8:</strong> The messageRetentionPeriod (in seconds) a message will be retained by SQS for this queue, to set in the <code>com.amazonaws.services.sqs.model.SetQueueAttributesRequest</code>.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>policy</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Shared</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.8:</strong> The policy for this queue to set in the <code>com.amazonaws.services.sqs.model.SetQueueAttributesRequest</code>.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>delaySeconds</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="
 1" rowspan="1" class="confluenceTd"><p>Producer</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.9.3:</strong> Delay sending messages for a number of seconds.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>waitTimeSeconds</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>0</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Producer</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.11:</strong> Duration in seconds (0 to 20) that the ReceiveMessage action call will wait until a message is in the queue to include in the response.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>receiveMessageWaitTimeSeconds</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>0</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Shared</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.11:</strong> If you do not specify WaitT
 imeSeconds in the request, the queue attribute ReceiveMessageWaitTimeSeconds is used to determine how long to wait.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>queueOwnerAWSAccountId</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Shared</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.12:</strong> Specify the queue owner aws account id when you need to connect the queue with different account owner.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>region</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Shared</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.12.3:</strong> Specify the queue region which could be used with <code>queueOwnerAWSAccountId</code> to build the service URL.</p></td></tr><tr><td colspa
 n="1" rowspan="1" class="confluenceTd"><p>redrivePolicy</p></td><td colspan="1" rowspan="1" class="confluenceTd"><code>null</code></td><td colspan="1" rowspan="1" class="confluenceTd">Shared</td><td colspan="1" rowspan="1" class="confluenceTd"><strong>Camel 2.15</strong>: Specify the policy that send message to DeadLetter queue. See detail at <a shape="rect" class="external-link" href="http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sqs-queues-redrivepolicy.html" rel="nofollow">Amazon docs</a>.</td></tr></tbody></table></div>    <div class="aui-message hint shadowed information-macro">
                     <p class="title">Required SQS component options</p>
                             <span class="aui-icon icon-hint">Icon</span>
                 <div class="message-content">
                             <p>You have to provide the amazonSQSClient in the <a shape="rect" href="registry.html">Registry</a> or your accessKey and secretKey to access the <a shape="rect" class="external-link" href="http://aws.amazon.com/sqs" rel="nofollow">Amazon's SQS</a>.</p>
                     </div>
     </div>
-<h3 id="BookComponentAppendix-BatchConsumer">Batch Consumer</h3><p>This component implements the <a shape="rect" href="batch-consumer.html">Batch Consumer</a>.</p><p>This allows you for instance to know how many messages exists in this batch and for instance let the <a shape="rect" href="aggregator.html">Aggregator</a> aggregate this number of messages.</p><h3 id="BookComponentAppendix-Usage">Usage</h3><h4 id="BookComponentAppendix-MessageheaderssetbytheSQSproducer">Message headers set by the SQS producer</h4><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p> Header </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>CamelAwsSqsMD5OfBody</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>String</code> </p></td><td colspan="1" row
 span="1" class="confluenceTd"><p> The MD5 checksum of the Amazon SQS message. </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>CamelAwsSqsMessageId</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>String</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> The Amazon SQS message ID. </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>CamelAwsSqsDelaySeconds</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>Integer</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> Since <strong>Camel 2.11</strong>, the delay seconds that the Amazon SQS message can be see by others. </p></td></tr></tbody></table></div>
-<h4 id="BookComponentAppendix-MessageheaderssetbytheSQSconsumer">Message headers set by the SQS consumer</h4><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p> Header </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>CamelAwsSqsMD5OfBody</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>String</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> The MD5 checksum of the Amazon SQS message. </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>CamelAwsSqsMessageId</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>String</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> The Amazon SQS message ID. </p></td></tr><tr><td colspan="1" rowspan="1" class=
 "confluenceTd"><p> <code>CamelAwsSqsReceiptHandle</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>String</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>  The Amazon SQS message receipt handle. </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>CamelAwsSqsAttributes</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>Map&lt;String, String&gt;</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> The Amazon SQS message attributes. </p></td></tr></tbody></table></div>
-<h4 id="BookComponentAppendix-AdvancedAmazonSQSconfiguration">Advanced AmazonSQS configuration</h4><p>If your Camel Application is running behind a firewall or if you need to have more control over the AmazonSQS instance configuration, you can create your own instance:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<h3 id="BookComponentAppendix-BatchConsumer">Batch Consumer</h3><p>This component implements the <a shape="rect" href="batch-consumer.html">Batch Consumer</a>.</p><p>This allows you for instance to know how many messages exists in this batch and for instance let the <a shape="rect" href="aggregator.html">Aggregator</a> aggregate this number of messages.</p><h3 id="BookComponentAppendix-Usage">Usage</h3><h4 id="BookComponentAppendix-MessageheaderssetbytheSQSproducer">Message headers set by the SQS producer</h4><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Header</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>CamelAwsSqsMD5OfBody</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>String</code></p></td><td colspan="1" rowspan="1" c
 lass="confluenceTd"><p>The MD5 checksum of the Amazon SQS message.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>CamelAwsSqsMessageId</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>String</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The Amazon SQS message ID.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>CamelAwsSqsDelaySeconds</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>Integer</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Since <strong>Camel 2.11</strong>, the delay seconds that the Amazon SQS message can be see by others.</p></td></tr></tbody></table></div><h4 id="BookComponentAppendix-MessageheaderssetbytheSQSconsumer">Message headers set by the SQS consumer</h4><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Header</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>CamelAwsSqsMD5OfBody</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>String</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The MD5 checksum of the Amazon SQS message.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>CamelAwsSqsMessageId</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>String</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The Amazon SQS message ID.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>CamelAwsSqsReceiptHandle</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>String</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The Amazon SQS message receipt handle.</p></td></tr><tr><td colspan="1" rowspan="1" class="conflu
 enceTd"><p><code>CamelAwsSqsAttributes</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>Map&lt;String, String&gt;</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The Amazon SQS message attributes.</p></td></tr></tbody></table></div><h4 id="BookComponentAppendix-AdvancedAmazonSQSconfiguration">Advanced AmazonSQS configuration</h4><p>If your Camel Application is running behind a firewall or if you need to have more control over the AmazonSQS instance configuration, you can create your own instance:</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[AWSCredentials awsCredentials = new BasicAWSCredentials(&quot;myAccessKey&quot;, &quot;mySecretKey&quot;);
 
 ClientConfiguration clientConfiguration = new ClientConfiguration();
@@ -1529,11 +1526,11 @@ template.send(&quot;direct:alias-verify&
                     </div>
     </div>
 <p>The <strong>cxf:</strong> component provides integration with <a shape="rect" href="http://cxf.apache.org">Apache CXF</a> for connecting to JAX-WS services hosted in CXF.</p><p><style type="text/css">/*<![CDATA[*/
-div.rbtoc1417598319140 {padding: 0px;}
-div.rbtoc1417598319140 ul {list-style: disc;margin-left: 0px;}
-div.rbtoc1417598319140 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1417781885361 {padding: 0px;}
+div.rbtoc1417781885361 ul {list-style: disc;margin-left: 0px;}
+div.rbtoc1417781885361 li {margin-left: 0px;padding-left: 0px;}
 
-/*]]>*/</style></p><div class="toc-macro rbtoc1417598319140">
+/*]]>*/</style></p><div class="toc-macro rbtoc1417781885361">
 <ul class="toc-indentation"><li><a shape="rect" href="#CXF-CXFComponent">CXF Component</a>
 <ul class="toc-indentation"><li><a shape="rect" href="#CXF-URIformat">URI format</a></li><li><a shape="rect" href="#CXF-Options">Options</a>
 <ul class="toc-indentation"><li><a shape="rect" href="#CXF-Thedescriptionsofthedataformats">The descriptions of the dataformats</a>
@@ -5011,7 +5008,7 @@ hibernate:[entityClassName][?options]
     &lt;!-- use the same version as your Camel core version --&gt;
 &lt;/dependency&gt;
 ]]></script>
-</div></div><h3 id="BookComponentAppendix-HL7MLLPprotocol">HL7 MLLP protocol</h3><p>HL7 is often used with the HL7 MLLP protocol that is a text based TCP socket based protocol. This component ships with a Mina Codec that conforms to the MLLP protocol so you can easily expose a HL7 listener that accepts HL7 requests over the TCP transport.</p><p>To expose a HL7 listener service we reuse the existing mina2 component where we just use the <code>HL7MLLPCodec</code> as codec.</p><p>The HL7 MLLP codec has the following options:</p><div class="confluenceTableSmall"><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>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>startByte</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>0x0b<
 /code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The start byte spanning the HL7 payload.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>endByte1</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>0x1c</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The first end byte spanning the HL7 payload.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>endByte2</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>0x0d</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The 2nd end byte spanning the HL7 payload.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>charset</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>JVM Default</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The encoding (is a <a shape="rect" class="external-link" href="http://docs.oracle.com/javase/6/docs/api/java/nio/charset/
 Charset.html" rel="nofollow">charset name</a>) to use for the codec. If not provided, Camel will use the <a shape="rect" class="external-link" href="http://docs.oracle.com/javase/6/docs/api/java/nio/charset/Charset.html#defaultCharset()" rel="nofollow">JVM default Charset</a>.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>convertLFtoCR</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Will convert <code>\n</code> to <code>\r</code> (<code>0x0d</code>, 13 decimal) as HL7 stipulates <code>\r</code> as segment terminators. The HAPI library requires the use of <code>\r</code>.</p></td></tr></tbody></table></div></div><h4 id="BookComponentAppendix-ExposingaHL7listener">Exposing a HL7 listener</h4><p>In our Spring XML file, we configure an endpoint to listen for HL7 requests using TCP:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent
  panelContent pdl">
+</div></div><h3 id="BookComponentAppendix-HL7MLLPprotocol">HL7 MLLP protocol</h3><p>HL7 is often used with the HL7 MLLP protocol that is a text based TCP socket based protocol. This component ships with a Mina Codec that conforms to the MLLP protocol so you can easily expose a HL7 listener that accepts HL7 requests over the TCP transport.</p><p>To expose a HL7 listener service we reuse the existing mina2 component where we just use the <code>HL7MLLPCodec</code> as codec.</p><p>The HL7 MLLP codec has the following options:</p><div class="confluenceTableSmall"><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>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>startByte</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>0x0b<
 /code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The start byte spanning the HL7 payload.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>endByte1</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>0x1c</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The first end byte spanning the HL7 payload.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>endByte2</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>0x0d</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The 2nd end byte spanning the HL7 payload.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>charset</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>JVM Default</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The encoding (is a <a shape="rect" class="external-link" href="http://docs.oracle.com/javase/6/docs/api/java/nio/charset/
 Charset.html" rel="nofollow">charset name</a>) to use for the codec. If not provided, Camel will use the <a shape="rect" class="external-link" href="http://docs.oracle.com/javase/6/docs/api/java/nio/charset/Charset.html#defaultCharset()" rel="nofollow">JVM default Charset</a>.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>convertLFtoCR</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Will convert <code>\n</code> to <code>\r</code> (<code>0x0d</code>, 13 decimal) as HL7 stipulates <code>\r</code> as segment terminators. The HAPI library requires the use of <code>\r</code>.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><code>produceString</code></td><td colspan="1" rowspan="1" class="confluenceTd"><code>true</code></td><td colspan="1" rowspan="1" class="confluenceTd"><strong>(Camel 2.14.1)</strong> If true, the codec creates a string using t
 he defined charset. If false, the codec sends the plain byte array into the route, so that the HL7 Data Format can determine the actual charset from the HL7 message content.</td></tr></tbody></table></div></div><h4 id="BookComponentAppendix-ExposingaHL7listener">Exposing a HL7 listener</h4><p>In our Spring XML file, we configure an endpoint to listen for HL7 requests using TCP:</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;endpoint id=&quot;hl7listener&quot; uri=&quot;mina:tcp://localhost:8888?sync=true&amp;amp;codec=#hl7codec&quot;/&gt;
         &lt;!-- Camel 2.11: uri=&quot;mina2:tcp... --&gt;
 ]]></script>
@@ -5041,7 +5038,7 @@ public class PatientLookupService {
         return response
     }
 ]]></script>
-</div></div><p>Notice that this class uses just imports from the HAPI library and <strong>not</strong> from Camel.</p><h3 id="BookComponentAppendix-HL7Modelusingjava.lang.String">HL7 Model using java.lang.String</h3><p>The HL7MLLP codec uses plain <code>String</code> as its data format. Camel uses its <a shape="rect" href="type-converter.html">Type Converter</a> to convert to/from strings to the HAPI HL7 model objects. However, you can use plain <code>String</code> objects if you prefer, for instance if you wish to parse the data yourself.</p><p>See samples for such an example.</p><h3 id="BookComponentAppendix-HL7v2ModelusingHAPI">HL7v2 Model using HAPI</h3><p>The HL7v2 model uses Java objects from the HAPI library. Using this library, we can encode and decode from the EDI format (ER7) that is mostly used with HL7v2.<br clear="none"> With this model you can code with Java objects instead of the EDI based HL7 format that can be hard for humans to read and understand.</p><p>The sample
  below is a request to lookup a patient with the patient ID <code>0101701234</code>.</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+</div></div><p>Notice that this class uses just imports from the HAPI library and <strong>not</strong> from Camel.</p><h3 id="BookComponentAppendix-HL7Modelusingjava.lang.Stringorbyte[]">HL7 Model using java.lang.String or byte[]</h3><p>The HL7MLLP codec uses plain <code>String</code> as its data format. Camel uses its <a shape="rect" href="type-converter.html">Type Converter</a> to convert to/from strings to the HAPI HL7 model objects. However, you can use plain <code>String</code> objects if you prefer, for instance if you wish to parse the data yourself.</p><p>See samples for such an example.</p><p>As of Camel 2.14.1 you can also let the codec use a plain&#160;<code>byte[]</code> as its data format. The Type Converter is also capable of converting the&#160;<code>byte[]</code> to/from HAPI HL7 model objects. Furthermore,</p><h3 id="BookComponentAppendix-HL7v2ModelusingHAPI">HL7v2 Model using HAPI</h3><p>The HL7v2 model uses Java objects from the HAPI library. Using this library, w
 e can encode and decode from the EDI format (ER7) that is mostly used with HL7v2.<br clear="none"> With this model you can code with Java objects instead of the EDI based HL7 format that can be hard for humans to read and understand.</p><p>The sample below is a request to lookup a patient with the patient ID <code>0101701234</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[MSH|^~\\&amp;|MYSENDER|MYRECEIVER|MYAPPLICATION||200612211200||QRY^A19|1234|P|2.4
 QRD|200612211200|R|I|GetPatient|||1^RD|0101701234|DEM||
 ]]></script>
@@ -5057,60 +5054,41 @@ String patientId = msg.getQRD().getWhoSu
 </div></div><p>Camel has built-in type converters, so when this operation is invoked:</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[Message msg = exchange.getIn().getBody(Message.class);
 ]]></script>
-</div></div><p>Camel will convert the received HL7 data from <code>String</code> to <code>Message</code>. This is powerful when combined with the HL7 listener, then you as the end-user don't have to work with <code>byte[]</code>, <code>String</code> or any other simple object formats. You can just use the HAPI HL7v2 model objects.</p><p></p><h3 id="BookComponentAppendix-HL7DataFormat">HL7 DataFormat</h3>
-<p>The <a shape="rect" href="hl7.html">HL7</a> component ships with a HL7 data format that can be used to format between <code>String</code> and HL7 model objects. </p>
-<ul class="alternate"><li><code>marshal</code> = from Message to byte stream (can be used when returning as response using the HL7 MLLP codec)</li><li><code>unmarshal</code> = from byte stream to Message (can be used when receiving streamed data from the HL7 MLLP</li></ul>
-
-
-<p>To use the data format, simply instantiate an instance and invoke the marshal or unmarshal operation in the route builder:</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[
-  DataFormat hl7 = new HL7DataFormat();
+</div></div><p>Camel will convert the received HL7 data to <code>Message</code>. This is powerful when combined with the HL7 listener, then you as the end-user don't have to work with <code>byte[]</code>, <code>String</code> or any other simple object formats. You can just use the HAPI HL7v2 model objects.</p><p></p><h3 id="BookComponentAppendix-HL7DataFormat">HL7 DataFormat</h3><p>The <a shape="rect" href="hl7.html">HL7</a> component ships with a HL7 data format that can be used to marshal or unmarshal HL7 model objects.</p><ul class="alternate"><li><code>marshal</code> = from Message to byte stream (can be used when returning as response using the HL7 MLLP codec)</li><li><code>unmarshal</code> = from byte stream to Message (can be used when receiving streamed data from the HL7 MLLP</li></ul><p>To use the data format, simply instantiate an instance and invoke the marshal or unmarshal operation in the route builder:</p><div class="code panel pdl" style="border-width: 1px;"><div clas
 s="codeContent panelContent pdl">
+<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[  DataFormat hl7 = new HL7DataFormat();
   ...
   from(&quot;direct:hl7in&quot;).marshal(hl7).to(&quot;jms:queue:hl7out&quot;);
 ]]></script>
-</div></div>
-<p>In the sample above, the HL7 is marshalled from a HAPI Message object to a byte stream and put on a JMS queue.<br clear="none">
-The next example is the opposite:</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[
-  DataFormat hl7 = new HL7DataFormat();
+</div></div><p>In the sample above, the HL7 is marshalled from a HAPI Message object to a byte stream and put on a JMS queue.<br clear="none"> The next example is the opposite:</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[  DataFormat hl7 = new HL7DataFormat();
   ...
   from(&quot;jms:queue:hl7out&quot;).unmarshal(hl7).to(&quot;patientLookupService&quot;);
 ]]></script>
-</div></div>
-<p>Here we unmarshal the byte stream into a HAPI Message object that is passed to our patient lookup service.</p>
-
-    <div class="aui-message warning shadowed information-macro">
+</div></div><p>Here we unmarshal the byte stream into a HAPI Message object that is passed to our patient lookup service.</p>    <div class="aui-message warning shadowed information-macro">
                     <p class="title">Segment separators</p>
                             <span class="aui-icon icon-warning">Icon</span>
                 <div class="message-content">
-                            
-<p>As of <strong>Camel 2.11</strong>, <code>unmarshal</code> does not automatically fix segment separators anymore by converting <code>\n</code> to <code>\r</code>. If you <br clear="none">
-need this conversion, <code>org.apache.camel.component.hl7.HL7#convertLFToCR</code> provides a handy <code>Expression</code> for this purpose.</p>
+                            <p>As of <strong>Camel 2.11</strong>, <code>unmarshal</code> does not automatically fix segment separators anymore by converting <code>\n</code> to <code>\r</code>. If you <br clear="none"> need this conversion, <code>org.apache.camel.component.hl7.HL7#convertLFToCR</code> provides a handy <code>Expression</code> for this purpose.</p>
                     </div>
     </div>
-
-
-<p>Notice there is a shorthand syntax in Camel for well-known data formats that is commonly used.<br clear="none">
-Then you don't need to create an instance of the <code>HL7DataFormat</code> object:</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;direct:hl7in&quot;).marshal().hl7().to(&quot;jms:queue:hl7out&quot;);
+    <div class="aui-message warning shadowed information-macro">
+                    <p class="title">Charset</p>
+                            <span class="aui-icon icon-warning">Icon</span>
+                <div class="message-content">
+                            <p>As of <strong>Camel 2.14.1</strong>, both <code>marshal and unmarshal</code> consider the charset provided in the field&#160;<code>MSH-18</code>. If this field is empty, by default the charset contained in the corresponding Camel charset property/header is assumed. You can even change this default behavior by overriding the <code>guessCharsetName</code> method when inheriting from the <code>HL7DataFormat</code> class.</p>
+                    </div>
+    </div>
+<p>&#160;</p><p>Notice there is a shorthand syntax in Camel for well-known data formats that is commonly used.<br clear="none"> Then you don't need to create an instance of the <code>HL7DataFormat</code> object:</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;direct:hl7in&quot;).marshal().hl7().to(&quot;jms:queue:hl7out&quot;);
   from(&quot;jms:queue:hl7out&quot;).unmarshal().hl7().to(&quot;patientLookupService&quot;);
 ]]></script>
-</div></div>
-
-    <div class="aui-message success shadowed information-macro">
+</div></div>    <div class="aui-message success shadowed information-macro">
                     <p class="title">Serializable messages</p>
                             <span class="aui-icon icon-success">Icon</span>
                 <div class="message-content">
-                            
-<p>As of HAPI 2.0 (used by <strong>Camel 2.11</strong>), the HL7v2 model classes are fully serializable. So you can put HL7v2 messages directly into a JMS queue (i.e. without calling <code>marshal()</code> and read them again directly from the queue (i.e. without calling <code>unmarshal()</code>.</p>
+                            <p>As of HAPI 2.0 (used by <strong>Camel 2.11</strong>), the HL7v2 model classes are fully serializable. So you can put HL7v2 messages directly into a JMS queue (i.e. without calling <code>marshal()</code> and read them again directly from the queue (i.e. without calling <code>unmarshal()</code>.</p>
                     </div>
-    </div>
-
-<h3 id="BookComponentAppendix-MessageHeaders.5">Message Headers</h3><p>The <strong>unmarshal</strong> operation adds these MSH fields as headers on the Camel message:</p><div class="confluenceTableSmall"><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Key</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>MSH field</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Example</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>CamelHL7SendingApplication</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>MSH-3</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>MYSERVER</code></p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>CamelHL7SendingFacility</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>MSH-4</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>MYSERVERAPP<
 /code></p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>CamelHL7ReceivingApplication</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>MSH-5</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>MYCLIENT</code></p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>CamelHL7ReceivingFacility</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>MSH-6</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>MYCLIENTAPP</code></p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>CamelHL7Timestamp</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>MSH-7</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>20071231235900</code></p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>CamelHL7Security</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>MSH-8</code></
 p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>CamelHL7MessageType</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>MSH-9-1</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>ADT</code></p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>CamelHL7TriggerEvent</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>MSH-9-2</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>A01</code></p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>CamelHL7MessageControl</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>MSH-10</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>1234</code></p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>CamelHL7ProcessingId</code></p></td><td colspan="1" rowspan="
 1" class="confluenceTd"><p><code>MSH-11</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>P</code></p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>CamelHL7VersionId</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>MSH-12</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>2.4</code></p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><code>CamelHL7Context </code><code><br clear="none"></code></td><td colspan="1" rowspan="1" class="confluenceTd">-</td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>(Camel 2.14)</strong> contains the HapiContext that<br clear="none">was used to parse the message</p></td></tr></tbody></table></div></div><p>All headers except&#160;<code>CamelHL7Context </code>are <code>String</code> types. If a header value is missing, its value is <code>null</code>.</p><h3 id="BookComponentAppendix-Options.21">Options</h3><p>The HL7 Data Format suppo
 rts the following options:</p><div class="confluenceTableSmall"><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Option</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>validate</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>true</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Whether the HAPI Parser should validate using the default validation rules. Better use the <code>parser</code> or <code>hapiContext</code> option and initialize it with the desired HAPI <code>ValidationContext</code></p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>parser</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>ca.uhn.hl7v2.parser.GenericParser</code></p></td><td colspan="1" rowspan="1" cla
 ss="confluenceTd"><p>Use a custom parser. Must be of type <code>ca.uhn.hl7v2.parser.Parser</code>. Note that <code>GenericParser</code> also allows to parse XML-encoded HL7v2 messages</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><code>hapiContext</code></td><td colspan="1" rowspan="1" class="confluenceTd"><code>ca.uhn.hl7v2.DefaultHapiContext</code></td><td colspan="1" rowspan="1" class="confluenceTd"><strong>Camel 2.14:</strong> Use a custom HAPI context that can define a custom parser, custom ValidationContext etc. This gives you full control over the HL7 parsing and rendering process.</td></tr></tbody></table></div></div><h3 id="BookComponentAppendix-Dependencies.2">Dependencies</h3><p>To use HL7 in your Camel routes you'll need to add a dependency on <strong>camel-hl7</strong> listed above, which implements this data format.</p><p>The HAPI library since Version 0.6 has been split into a <a shape="rect" class="external-link" href="http://repo1.maven.org/maven
 2/ca/uhn/hapi/hapi-base" rel="nofollow">base library</a> and several structure libraries, one for each HL7v2 message version:</p><ul><li><a shape="rect" class="external-link" href="http://repo1.maven.org/maven2/ca/uhn/hapi/hapi-structures-v21" rel="nofollow">v2.1 structures library</a></li><li><a shape="rect" class="external-link" href="http://repo1.maven.org/maven2/ca/uhn/hapi/hapi-structures-v22" rel="nofollow">v2.2 structures library</a></li><li><a shape="rect" class="external-link" href="http://repo1.maven.org/maven2/ca/uhn/hapi/hapi-structures-v23" rel="nofollow">v2.3 structures library</a></li><li><a shape="rect" class="external-link" href="http://repo1.maven.org/maven2/ca/uhn/hapi/hapi-structures-v231" rel="nofollow">v2.3.1 structures library</a></li><li><a shape="rect" class="external-link" href="http://repo1.maven.org/maven2/ca/uhn/hapi/hapi-structures-v24" rel="nofollow">v2.4 structures library</a></li><li><a shape="rect" class="external-link" href="http://repo1.maven.org/
 maven2/ca/uhn/hapi/hapi-structures-v25" rel="nofollow">v2.5 structures library</a></li><li><a shape="rect" class="external-link" href="http://repo1.maven.org/maven2/ca/uhn/hapi/hapi-structures-v251" rel="nofollow">v2.5.1 structures library</a></li><li><a shape="rect" class="external-link" href="http://repo1.maven.org/maven2/ca/uhn/hapi/hapi-structures-v26" rel="nofollow">v2.6 structures library</a></li></ul><p>By default <code>camel-hl7</code> only references the HAPI <a shape="rect" class="external-link" href="http://repo1.maven.org/maven2/ca/uhn/hapi/hapi-base" rel="nofollow">base library</a>. Applications are responsible for including structure libraries themselves. For example, if a application works with HL7v2 message versions 2.4 and 2.5 then the following dependencies must be added:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+    </div><h3 id="BookComponentAppendix-MessageHeaders.5">Message Headers</h3><p>The <strong>unmarshal</strong> operation adds these MSH fields as headers on the Camel message:</p><div class="confluenceTableSmall"><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Key</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>MSH field</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Example</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>CamelHL7SendingApplication</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>MSH-3</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>MYSERVER</code></p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>CamelHL7SendingFacility</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>MSH-4</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>MY
 SERVERAPP</code></p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>CamelHL7ReceivingApplication</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>MSH-5</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>MYCLIENT</code></p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>CamelHL7ReceivingFacility</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>MSH-6</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>MYCLIENTAPP</code></p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>CamelHL7Timestamp</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>MSH-7</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>20071231235900</code></p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>CamelHL7Security</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>MSH-
 8</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>CamelHL7MessageType</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>MSH-9-1</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>ADT</code></p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>CamelHL7TriggerEvent</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>MSH-9-2</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>A01</code></p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>CamelHL7MessageControl</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>MSH-10</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>1234</code></p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>CamelHL7ProcessingId</code></p></td><td colspan="1"
  rowspan="1" class="confluenceTd"><p><code>MSH-11</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>P</code></p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>CamelHL7VersionId</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>MSH-12</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>2.4</code></p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><code>CamelHL7Context </code><code><br clear="none"></code></td><td colspan="1" rowspan="1" class="confluenceTd">-</td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>(Camel 2.14)</strong> contains the HapiContext that<br clear="none">was used to parse the message</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><code>CamelHL7Charset</code></td><td colspan="1" rowspan="1" class="confluenceTd"><code>MSH-18</code></td><td colspan="1" rowspan="1" class="confluenceTd"><strong>(Camel 2.14.1)</strong> <code><br cl
 ear="none">UNICODE UTF-8</code></td></tr></tbody></table></div></div><p>All headers except&#160;<code>CamelHL7Context </code>are <code>String</code> types. If a header value is missing, its value is <code>null</code>.</p><h3 id="BookComponentAppendix-Options.21">Options</h3><p>The HL7 Data Format supports the following options:</p><div class="confluenceTableSmall"><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Option</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>validate</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>true</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Whether the HAPI Parser should validate using the default validation rules. Better use the <code>parser</code> or <code>hapiContext</code> option and
  initialize it with the desired HAPI <code>ValidationContext</code></p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>parser</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>ca.uhn.hl7v2.parser.GenericParser</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Use a custom parser. Must be of type <code>ca.uhn.hl7v2.parser.Parser</code>. Note that <code>GenericParser</code> also allows to parse XML-encoded HL7v2 messages</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><code>hapiContext</code></td><td colspan="1" rowspan="1" class="confluenceTd"><code>ca.uhn.hl7v2.DefaultHapiContext</code></td><td colspan="1" rowspan="1" class="confluenceTd"><strong>Camel 2.14:</strong> Use a custom HAPI context that can define a custom parser, custom ValidationContext etc. This gives you full control over the HL7 parsing and rendering process.</td></tr></tbody></table></div></div><h3 id="BookComponentAppendix-Dependencie
 s.2">Dependencies</h3><p>To use HL7 in your Camel routes you'll need to add a dependency on <strong>camel-hl7</strong> listed above, which implements this data format.</p><p>The HAPI library is split into a <a shape="rect" class="external-link" href="http://repo1.maven.org/maven2/ca/uhn/hapi/hapi-base" rel="nofollow">base library</a> and several structure libraries, one for each HL7v2 message version:</p><ul><li><a shape="rect" class="external-link" href="http://repo1.maven.org/maven2/ca/uhn/hapi/hapi-structures-v21" rel="nofollow">v2.1 structures library</a></li><li><a shape="rect" class="external-link" href="http://repo1.maven.org/maven2/ca/uhn/hapi/hapi-structures-v22" rel="nofollow">v2.2 structures library</a></li><li><a shape="rect" class="external-link" href="http://repo1.maven.org/maven2/ca/uhn/hapi/hapi-structures-v23" rel="nofollow">v2.3 structures library</a></li><li><a shape="rect" class="external-link" href="http://repo1.maven.org/maven2/ca/uhn/hapi/hapi-structures-v231"
  rel="nofollow">v2.3.1 structures library</a></li><li><a shape="rect" class="external-link" href="http://repo1.maven.org/maven2/ca/uhn/hapi/hapi-structures-v24" rel="nofollow">v2.4 structures library</a></li><li><a shape="rect" class="external-link" href="http://repo1.maven.org/maven2/ca/uhn/hapi/hapi-structures-v25" rel="nofollow">v2.5 structures library</a></li><li><a shape="rect" class="external-link" href="http://repo1.maven.org/maven2/ca/uhn/hapi/hapi-structures-v251" rel="nofollow">v2.5.1 structures library</a></li><li><a shape="rect" class="external-link" href="http://repo1.maven.org/maven2/ca/uhn/hapi/hapi-structures-v26" rel="nofollow">v2.6 structures library</a></li></ul><p>By default <code>camel-hl7</code> only references the HAPI <a shape="rect" class="external-link" href="http://repo1.maven.org/maven2/ca/uhn/hapi/hapi-base" rel="nofollow">base library</a>. Applications are responsible for including structure libraries themselves. For example, if a application works with
  HL7v2 message versions 2.4 and 2.5 then the following dependencies must be added:</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;dependency&gt;
     &lt;groupId&gt;ca.uhn.hapi&lt;/groupId&gt;
     &lt;artifactId&gt;hapi-structures-v24&lt;/artifactId&gt;
@@ -12981,9 +12959,7 @@ from(&quot;vm:order.email&quot;).bean(My
 </div></div><h3 id="BookComponentAppendix-URIformat.75">URI format</h3><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
 <script class="theme: Default; brush: text; gutter: false" type="syntaxhighlighter"><![CDATA[xmpp://[login@]hostname[:port][/participant][?Options]
 ]]></script>
-</div></div><p>The component supports both room based and private person-person conversations.<br clear="none"> The component supports both producer and consumer (you can get messages from XMPP or send messages to XMPP). Consumer mode supports rooms starting.</p><p>You can append query options to the URI in the following format, <code>?option=value&amp;option=value&amp;...</code></p><h3 id="BookComponentAppendix-Options.59">Options</h3><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> Description </p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>room</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> If this option is specified, the component will connect to MUC (Multi User Chat). Usually, the domain name for MUC is different from the login domain. For example, if you are <code>superman@jabber.org</code> 
 and want to join the <code>krypton</code> room, then the room URL is <code>krypton@conference.jabber.org</code>. Note the <code>conference</code> part.<br clear="none">
-It is not a requirement to provide the full room JID. If the <code>room</code> parameter does not contain the <code>@</code> symbol, the domain part will be discovered and added by Camel</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>user</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> User name (without server name). If not specified, anonymous login will be attempted. </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> Password. </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>resource</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> XMPP resource. The default is <code>Camel</code>. </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>createAccount</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> If <code>true</code>, an attempt to create a
 n account will be made. Default is <code>false</code>. </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>participant</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> JID (Jabber ID) of person to receive messages. <code>room</code> parameter has precedence over <code>participant</code>. </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>nickname</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> Use nickname when joining room. If room is specified and nickname is not, <code>user</code> will be used for the nickname. </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>serviceName</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> The name of the service you are connecting to. For Google Talk, this would be <code>gmail.com</code>. </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>testConnectionOnStartup</code> </p></td><td cols
 pan="1" rowspan="1" class="confluenceTd"><p> <strong>Camel 2.11</strong> Specifies whether to test the connection on startup. This is used to ensure that the XMPP client has a valid connection to the XMPP server when the route starts. Camel throws an exception on startup if a connection cannot be established. When this option is set to false, Camel will attempt to establish a "lazy" connection when needed by a producer, and will poll for a consumer connection until the connection is established.   Default is <code>true</code>. </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>connectionPollDelay</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> <strong>Camel 2.11</strong> The amount of time in seconds between polls to verify the health of the XMPP connection, or between attempts to establish an initial consumer connection. Camel will try to re-establish a connection if it has become inactive. Default is <code>10 seconds</code>.</p></td><
 /tr></tbody></table></div>
-<h3 id="BookComponentAppendix-HeadersandsettingSubjectorLanguage">Headers and setting Subject or Language</h3><p>Camel sets the message IN headers as properties on the XMPP message. You can configure a <code>HeaderFilterStategy</code> if you need custom filtering of headers.<br clear="none"> The <strong>Subject</strong> and <strong>Language</strong> of the XMPP message are also set if they are provided as IN headers.</p><h3 id="BookComponentAppendix-Examples.14">Examples</h3><p>User <code>superman</code> to join room <code>krypton</code> at <code>jabber</code> server with password, <code>secret</code>:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+</div></div><p>The component supports both room based and private person-person conversations.<br clear="none"> The component supports both producer and consumer (you can get messages from XMPP or send messages to XMPP). Consumer mode supports rooms starting.</p><p>You can append query options to the URI in the following format, <code>?option=value&amp;option=value&amp;...</code></p><h3 id="BookComponentAppendix-Options.59">Options</h3><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>Description</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>room</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>If this option is specified, the component will connect to MUC (Multi User Chat). Usually, the domain name for MUC is different from the login domain. For example, if you are <code>superman@jabber.org</code> and wan
 t to join the <code>krypton</code> room, then the room URL is <code>krypton@conference.jabber.org</code>. Note the <code>conference</code> part.<br clear="none"> It is not a requirement to provide the full room JID. If the <code>room</code> parameter does not contain the <code>@</code> symbol, the domain part will be discovered and added by Camel</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>user</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>User name (without server name). If not specified, anonymous login will be attempted.</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>Password.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>resource</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>XMPP resource. The default is <code>Camel</code>.</p></td></tr><tr><td colspan="1" rowspan="1" class="c
 onfluenceTd"><p><code>createAccount</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>If <code>true</code>, an attempt to create an account will be made. Default is <code>false</code>.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>participant</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>JID (Jabber ID) of person to receive messages. <code>room</code> parameter has precedence over <code>participant</code>.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>nickname</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Use nickname when joining room. If room is specified and nickname is not, <code>user</code> will be used for the nickname.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>serviceName</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The name of the service you are connecting to. For Google Talk, this would be <code>gmail.co
 m</code>.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>testConnectionOnStartup</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.11</strong> Specifies whether to test the connection on startup. This is used to ensure that the XMPP client has a valid connection to the XMPP server when the route starts. Camel throws an exception on startup if a connection cannot be established. When this option is set to false, Camel will attempt to establish a "lazy" connection when needed by a producer, and will poll for a consumer connection until the connection is established. Default is <code>true</code>.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>connectionPollDelay</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.11</strong> The amount of time in seconds between polls to verify the health of the XMPP connection, or between attempts to establish an initial consumer con
 nection. Camel will try to re-establish a connection if it has become inactive. Default is <code>10 seconds</code>.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">pubsub</td><td colspan="1" rowspan="1" class="confluenceTd"><strong>Camel 2.15</strong> Accept pubsub packets on input, default is false</td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd">doc</td><td colspan="1" rowspan="1" class="confluenceTd"><strong>Camel 2.15</strong> <span>Set a doc header on the IN message containing a Document form of the incoming packet; default is true if presence or pubsub are true, otherwise false</span></td></tr></tbody></table></div><h3 id="BookComponentAppendix-HeadersandsettingSubjectorLanguage">Headers and setting Subject or Language</h3><p>Camel sets the message IN headers as properties on the XMPP message. You can configure a <code>HeaderFilterStategy</code> if you need custom filtering of headers.<br clear="none"> The <strong>Subject</strong> and <strong>Lan
 guage</strong> of the XMPP message are also set if they are provided as IN headers.</p><h3 id="BookComponentAppendix-Examples.14">Examples</h3><p>User <code>superman</code> to join room <code>krypton</code> at <code>jabber</code> server with password, <code>secret</code>:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
 <script class="theme: Default; brush: text; gutter: false" type="syntaxhighlighter"><![CDATA[xmpp://superman@jabber.org/?room=krypton@conference.jabber.org&amp;password=secret
 ]]></script>
 </div></div><p>User <code>superman</code> to send messages to <code>joker</code>:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">

Modified: websites/production/camel/content/book-dataformat-appendix.html
==============================================================================
--- websites/production/camel/content/book-dataformat-appendix.html (original)
+++ websites/production/camel/content/book-dataformat-appendix.html Fri Dec  5 12:20:48 2014
@@ -632,60 +632,41 @@ from(&quot;jms://queue/order&quot;).unma
 <h3 id="BookDataFormatAppendix-Dependencies.4">Dependencies</h3>
 
 <p>This data format is provided in <strong>camel-core</strong> so no additional dependencies is needed.</p>
-<h3 id="BookDataFormatAppendix-HL7DataFormat">HL7 DataFormat</h3>
-<p>The <a shape="rect" href="hl7.html">HL7</a> component ships with a HL7 data format that can be used to format between <code>String</code> and HL7 model objects. </p>
-<ul class="alternate"><li><code>marshal</code> = from Message to byte stream (can be used when returning as response using the HL7 MLLP codec)</li><li><code>unmarshal</code> = from byte stream to Message (can be used when receiving streamed data from the HL7 MLLP</li></ul>
-
-
-<p>To use the data format, simply instantiate an instance and invoke the marshal or unmarshal operation in the route builder:</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[
-  DataFormat hl7 = new HL7DataFormat();
+<h3 id="BookDataFormatAppendix-HL7DataFormat">HL7 DataFormat</h3><p>The <a shape="rect" href="hl7.html">HL7</a> component ships with a HL7 data format that can be used to marshal or unmarshal HL7 model objects.</p><ul class="alternate"><li><code>marshal</code> = from Message to byte stream (can be used when returning as response using the HL7 MLLP codec)</li><li><code>unmarshal</code> = from byte stream to Message (can be used when receiving streamed data from the HL7 MLLP</li></ul><p>To use the data format, simply instantiate an instance and invoke the marshal or unmarshal operation in the route builder:</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[  DataFormat hl7 = new HL7DataFormat();
   ...
   from(&quot;direct:hl7in&quot;).marshal(hl7).to(&quot;jms:queue:hl7out&quot;);
 ]]></script>
-</div></div>
-<p>In the sample above, the HL7 is marshalled from a HAPI Message object to a byte stream and put on a JMS queue.<br clear="none">
-The next example is the opposite:</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[
-  DataFormat hl7 = new HL7DataFormat();
+</div></div><p>In the sample above, the HL7 is marshalled from a HAPI Message object to a byte stream and put on a JMS queue.<br clear="none"> The next example is the opposite:</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[  DataFormat hl7 = new HL7DataFormat();
   ...
   from(&quot;jms:queue:hl7out&quot;).unmarshal(hl7).to(&quot;patientLookupService&quot;);
 ]]></script>
-</div></div>
-<p>Here we unmarshal the byte stream into a HAPI Message object that is passed to our patient lookup service.</p>
-
-    <div class="aui-message warning shadowed information-macro">
+</div></div><p>Here we unmarshal the byte stream into a HAPI Message object that is passed to our patient lookup service.</p>    <div class="aui-message warning shadowed information-macro">
                     <p class="title">Segment separators</p>
                             <span class="aui-icon icon-warning">Icon</span>
                 <div class="message-content">
-                            
-<p>As of <strong>Camel 2.11</strong>, <code>unmarshal</code> does not automatically fix segment separators anymore by converting <code>\n</code> to <code>\r</code>. If you <br clear="none">
-need this conversion, <code>org.apache.camel.component.hl7.HL7#convertLFToCR</code> provides a handy <code>Expression</code> for this purpose.</p>
+                            <p>As of <strong>Camel 2.11</strong>, <code>unmarshal</code> does not automatically fix segment separators anymore by converting <code>\n</code> to <code>\r</code>. If you <br clear="none"> need this conversion, <code>org.apache.camel.component.hl7.HL7#convertLFToCR</code> provides a handy <code>Expression</code> for this purpose.</p>
                     </div>
     </div>
-
-
-<p>Notice there is a shorthand syntax in Camel for well-known data formats that is commonly used.<br clear="none">
-Then you don't need to create an instance of the <code>HL7DataFormat</code> object:</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;direct:hl7in&quot;).marshal().hl7().to(&quot;jms:queue:hl7out&quot;);
+    <div class="aui-message warning shadowed information-macro">
+                    <p class="title">Charset</p>
+                            <span class="aui-icon icon-warning">Icon</span>
+                <div class="message-content">
+                            <p>As of <strong>Camel 2.14.1</strong>, both <code>marshal and unmarshal</code> consider the charset provided in the field&#160;<code>MSH-18</code>. If this field is empty, by default the charset contained in the corresponding Camel charset property/header is assumed. You can even change this default behavior by overriding the <code>guessCharsetName</code> method when inheriting from the <code>HL7DataFormat</code> class.</p>
+                    </div>
+    </div>
+<p>&#160;</p><p>Notice there is a shorthand syntax in Camel for well-known data formats that is commonly used.<br clear="none"> Then you don't need to create an instance of the <code>HL7DataFormat</code> object:</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;direct:hl7in&quot;).marshal().hl7().to(&quot;jms:queue:hl7out&quot;);
   from(&quot;jms:queue:hl7out&quot;).unmarshal().hl7().to(&quot;patientLookupService&quot;);
 ]]></script>
-</div></div>
-
-    <div class="aui-message success shadowed information-macro">
+</div></div>    <div class="aui-message success shadowed information-macro">
                     <p class="title">Serializable messages</p>
                             <span class="aui-icon icon-success">Icon</span>
                 <div class="message-content">
-                            
-<p>As of HAPI 2.0 (used by <strong>Camel 2.11</strong>), the HL7v2 model classes are fully serializable. So you can put HL7v2 messages directly into a JMS queue (i.e. without calling <code>marshal()</code> and read them again directly from the queue (i.e. without calling <code>unmarshal()</code>.</p>
+                            <p>As of HAPI 2.0 (used by <strong>Camel 2.11</strong>), the HL7v2 model classes are fully serializable. So you can put HL7v2 messages directly into a JMS queue (i.e. without calling <code>marshal()</code> and read them again directly from the queue (i.e. without calling <code>unmarshal()</code>.</p>
                     </div>
     </div>
-
-
 <h2 id="BookDataFormatAppendix-EDIDataFormat">EDI DataFormat</h2>
 
 <p>We encourage end users to look at the <a shape="rect" class="external-link" href="http://milyn.codehaus.org/Home" rel="nofollow">Smooks</a> which supports EDI and Camel natively.</p>