Modified: websites/production/camel/content/mina2.html
==============================================================================
--- websites/production/camel/content/mina2.html (original)
+++ websites/production/camel/content/mina2.html Mon Mar  2 15:25:49 2015
@@ -110,7 +110,7 @@
 mina2:udp://hostname[:port][?options]
 mina2:vm://hostname[:port][?options]
 ]]></script>
-</div></div><p>You can specify a codec in the <a shape="rect" 
href="registry.html">Registry</a> using the <strong>codec</strong> option. If 
you are using TCP and no codec is specified then the <code>textline</code> flag 
is used to determine if text line based codec or object serialization should be 
used instead. By default the object serialization is used.</p><p>For UDP if no 
codec is specified the default uses a basic <code>ByteBuffer</code> based 
codec.</p><p>The VM protocol is used as a direct forwarding mechanism in the 
same JVM.</p><p>A Mina producer has a default timeout value of 30 seconds, 
while it waits for a response from the remote server.</p><p>In normal use, 
<code>camel-mina</code> only supports marshalling the body 
content&#8212;message headers and exchange properties are not sent.<br 
clear="none"> However, the option, <strong>transferExchange</strong>, does 
allow you to transfer the exchange itself over the wire. See options 
below.</p><p>You can append query options t
 o the URI in the following format, 
<code>?option=value&amp;option=value&amp;...</code></p><h3 
id="MINA2-Options">Options</h3><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 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>codec</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>You can refer to a named 
<code>ProtocolCodecFactory</code> instance in your <a shape="rect" 
href="registry.html">Registry</a> such as your Spring 
<code>ApplicationContext</code>, which is then used for the 
marshalling.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>disconnect</code></p></td><td colspan="1" rowsp
 an="1" class="confluenceTd"><p><code>false</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>Whether or not to disconnect(close) from 
Mina session right after use. Can be used for both consumer and 
producer.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>textline</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>Only used for TCP. If no codec is 
specified, you can use this flag to indicate a text line based codec; if not 
specified or the value is <code>false</code>, then Object Serialization is 
assumed over TCP.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>textlineDelimiter</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>DEFAULT</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>Only used for TCP and if 
<strong>textline=true</strong>. Sets the text line delimiter to use. Pos
 sible values are: <code>DEFAULT</code>, <code>AUTO</code>, 
<code>WINDOWS</code>, <code>UNIX</code> or <code>MAC</code>. If none provided, 
Camel will use <code>DEFAULT</code>. This delimiter is used to mark the end of 
text.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>sync</code></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>true</code></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>Setting to set endpoint as one-way or 
request-response.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>lazySessionCreation</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>true</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>Sessions can be lazily created 
to avoid exceptions, if the remote server is not up and running when the Camel 
producer is started.</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><code>30000</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>You can configure the timeout that 
specifies how long to wait for a response from a remote server. The timeout 
unit is in milliseconds, so 60000 is 60 seconds. The timeout is only used for 
Mina producer.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>encoding</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><em>JVM Default</em></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>You can configure the encoding 
(a <a shape="rect" class="external-link" 
href="http://java.sun.com/j2se/1.5.0/docs/api/java/nio/charset/Charset.html"; 
rel="nofollow">charset name</a>) to use for the TCP textline codec and the UDP 
protocol. If not provided, Camel will use the <a shape="rect" 
class="external-link" 
href="http://java.sun.com/j2se/1.5.0/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>transferExchange</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>Only used for TCP. You can transfer the 
exchange over the wire instead of just the body. The following fields are 
transferred: In body, Out body, fault body, In headers, Out headers, fault 
headers, exchange properties, exchange exception. This requires that the 
objects are <em>serializable</em>. Camel will exclude any non-serializable 
objects and log it at <code>WARN</code> level.</p></td></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>minaLogger</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>You can enable the Apache MINA 
logging filter. Apache MINA uses <code>slf4j</code> logging at 
<code>INFO</code> level to log all input and output.</p><
 /td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>filters</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>You can set a list of <a shape="rect" 
class="external-link" href="http://mina.apache.org/iofilter.html";>Mina 
IoFilters</a> to register. The <code>filters</code> can be specified as a 
comma-separate list of bean references (e.g. 
<code>#filterBean1,#filterBean2</code>) where each bean must be of type 
<code>org.apache.mina.common.IoFilter</code>.</p></td></tr><tr><td colspan="1" 
rowspan="1" 
class="confluenceTd"><p><code>encoderMaxLineLength</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>-1</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>Set the textline protocol 
encoder max line length. By default the default value of Mina itself is used 
which are <code>Integer.MAX_VALUE</code>.</p></td></tr><tr><td colspan="1" 
rowspan="1
 " class="confluenceTd"><p><code>decoderMaxLineLength</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>-1</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>Set the textline protocol 
decoder max line length. By default the default value of Mina itself is used 
which are 1024.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>maximumPoolSize</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>16</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>Number of worker threads in the worker pool for TCP and 
UDP (UDP requires <strong>Camel 2.11.3/2.12.2</strong> 
onwards).</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>allowDefaultCodec</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>true</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>The mina component installs a default codec 
if both, <code>codec</code> is <code>null</code> and <code
 >textline</code> is <code>false</code>. Setting <code>allowDefaultCodec</code> 
 >to <code>false</code> prevents the mina component from installing a default 
 >codec as the first element in the filter chain. This is useful in scenarios 
 >where another filter must be the first in the filter chain, like the SSL 
 >filter.</p></td></tr><tr><td colspan="1" rowspan="1" 
 >class="confluenceTd"><p><code>disconnectOnNoReply</code></p></td><td 
 >colspan="1" rowspan="1" class="confluenceTd"><p><code>true</code></p></td><td 
 >colspan="1" rowspan="1" class="confluenceTd"><p>If sync is enabled then this 
 >option dictates MinaConsumer if it should disconnect where there is no reply 
 >to send back.</p></td></tr><tr><td colspan="1" rowspan="1" 
 >class="confluenceTd"><p><code>noReplyLogLevel</code></p></td><td colspan="1" 
 >rowspan="1" class="confluenceTd"><p><code>WARN</code></p></td><td colspan="1" 
 >rowspan="1" class="confluenceTd"><p>If sync is enabled this option dictates 
 >MinaConsumer which logging level to use when logg
 ing a there is no reply to send back. Values are: <code>FATAL, ERROR, INFO, 
DEBUG, OFF</code>.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>orderedThreadPoolExecutor</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>true</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>Whether to use ordered thread 
pool, to ensure events are processed orderly on the same 
channel.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>sslContextParameters</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>SSL configuration using an 
<code>org.apache.camel.util.jsse.SSLContextParameters</code> instance. See <a 
shape="rect" class="unresolved" href="#">Using the JSSE Configuration 
Utility</a>.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>autoStartTls</code></p></td><td colspan="1" 
rowspan="1" 
 class="confluenceTd"><p><code>true</code></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>Whether to auto start SSL 
handshake.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><code>cachedAddress</code></td><td colspan="1" rowspan="1" 
class="confluenceTd"><code>true</code></td><td colspan="1" rowspan="1" 
class="confluenceTd"><strong>Camel 2.14:</strong> Whether to create the 
InetAddress once and reuse. Setting this to <code>false</code> allows to pickup 
DNS changes in the network.</td></tr></tbody></table></div></div><h3 
id="MINA2-Usingacustomcodec">Using a custom codec</h3><p>See the Mina how to 
write your own codec. To use your custom codec with <code>camel-mina</code>, 
you should register your codec in the <a shape="rect" 
href="registry.html">Registry</a>; for example, by creating a bean in the 
Spring XML file. Then use the <code>codec</code> option to specify the bean ID 
of your codec. See <a shape="rect" href="hl7.html">HL7</a> that has a custom cod
 ec.</p><h3 id="MINA2-Samplewithsync=false">Sample with sync=false</h3><p>In 
this sample, Camel exposes a service that listens for TCP connections on port 
6200. We use the <strong>textline</strong> codec. In our route, we create a 
Mina consumer endpoint that listens on port 6200:</p><div class="code panel 
pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+</div></div><p>You can specify a codec in the <a shape="rect" 
href="registry.html">Registry</a> using the <strong>codec</strong> option. If 
you are using TCP and no codec is specified then the <code>textline</code> flag 
is used to determine if text line based codec or object serialization should be 
used instead. By default the object serialization is used.</p><p>For UDP if no 
codec is specified the default uses a basic <code>ByteBuffer</code> based 
codec.</p><p>The VM protocol is used as a direct forwarding mechanism in the 
same JVM.</p><p>A Mina producer has a default timeout value of 30 seconds, 
while it waits for a response from the remote server.</p><p>In normal use, 
<code>camel-mina</code> only supports marshalling the body 
content&#8212;message headers and exchange properties are not sent.<br 
clear="none"> However, the option, <strong>transferExchange</strong>, does 
allow you to transfer the exchange itself over the wire. See options 
below.</p><p>You can append query options t
 o the URI in the following format, 
<code>?option=value&amp;option=value&amp;...</code></p><h3 
id="MINA2-Options">Options</h3><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 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>codec</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>You can refer to a named 
<code>ProtocolCodecFactory</code> instance in your <a shape="rect" 
href="registry.html">Registry</a> such as your Spring 
<code>ApplicationContext</code>, which is then used for the 
marshalling.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>disconnect</code></p></td><td colspan="1" rowsp
 an="1" class="confluenceTd"><p><code>false</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>Whether or not to disconnect(close) from 
Mina session right after use. Can be used for both consumer and 
producer.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>textline</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>Only used for TCP. If no codec is 
specified, you can use this flag to indicate a text line based codec; if not 
specified or the value is <code>false</code>, then Object Serialization is 
assumed over TCP.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>textlineDelimiter</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>DEFAULT</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>Only used for TCP and if 
<strong>textline=true</strong>. Sets the text line delimiter to use. Pos
 sible values are: <code>DEFAULT</code>, <code>AUTO</code>, 
<code>WINDOWS</code>, <code>UNIX</code> or <code>MAC</code>. If none provided, 
Camel will use <code>DEFAULT</code>. This delimiter is used to mark the end of 
text.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>sync</code></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>true</code></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>Setting to set endpoint as one-way or 
request-response.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>lazySessionCreation</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>true</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>Sessions can be lazily created 
to avoid exceptions, if the remote server is not up and running when the Camel 
producer is started.</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><code>30000</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>You can configure the timeout that 
specifies how long to wait for a response from a remote server. The timeout 
unit is in milliseconds, so 60000 is 60 seconds. The timeout is only used for 
Mina producer.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>encoding</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><em>JVM Default</em></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>You can configure the encoding 
(a <a shape="rect" class="external-link" 
href="http://java.sun.com/j2se/1.5.0/docs/api/java/nio/charset/Charset.html"; 
rel="nofollow">charset name</a>) to use for the TCP textline codec and the UDP 
protocol. If not provided, Camel will use the <a shape="rect" 
class="external-link" 
href="http://java.sun.com/j2se/1.5.0/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>transferExchange</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>Only used for TCP. You can transfer the 
exchange over the wire instead of just the body. The following fields are 
transferred: In body, Out body, fault body, In headers, Out headers, fault 
headers, exchange properties, exchange exception. This requires that the 
objects are <em>serializable</em>. Camel will exclude any non-serializable 
objects and log it at <code>WARN</code> level.</p></td></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>minaLogger</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>You can enable the Apache MINA 
logging filter. Apache MINA uses <code>slf4j</code> logging at 
<code>INFO</code> level to log all input and output.</p><
 /td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>filters</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>You can set a list of <a shape="rect" 
class="external-link" href="http://mina.apache.org/iofilter.html";>Mina 
IoFilters</a> to register. The <code>filters</code> can be specified as a 
comma-separate list of bean references (e.g. 
<code>#filterBean1,#filterBean2</code>) where each bean must be of type 
<code>org.apache.mina.common.IoFilter</code>.</p></td></tr><tr><td colspan="1" 
rowspan="1" 
class="confluenceTd"><p><code>encoderMaxLineLength</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>-1</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>Set the textline protocol 
encoder max line length. By default the default value of Mina itself is used 
which are <code>Integer.MAX_VALUE</code>.</p></td></tr><tr><td colspan="1" 
rowspan="1
 " class="confluenceTd"><p><code>decoderMaxLineLength</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>-1</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>Set the textline protocol 
decoder max line length. By default the default value of Mina itself is used 
which are 1024.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>maximumPoolSize</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>16</p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>Number of worker threads in the worker pool for TCP and 
UDP (UDP requires <strong>Camel 2.11.3/2.12.2</strong> 
onwards).</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>allowDefaultCodec</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>true</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>The mina component installs a default codec 
if both, <code>codec</code> is <code>null</code> and <code
 >textline</code> is <code>false</code>. Setting <code>allowDefaultCodec</code> 
 >to <code>false</code> prevents the mina component from installing a default 
 >codec as the first element in the filter chain. This is useful in scenarios 
 >where another filter must be the first in the filter chain, like the SSL 
 >filter.</p></td></tr><tr><td colspan="1" rowspan="1" 
 >class="confluenceTd"><p><code>disconnectOnNoReply</code></p></td><td 
 >colspan="1" rowspan="1" class="confluenceTd"><p><code>true</code></p></td><td 
 >colspan="1" rowspan="1" class="confluenceTd"><p>If sync is enabled then this 
 >option dictates MinaConsumer if it should disconnect where there is no reply 
 >to send back.</p></td></tr><tr><td colspan="1" rowspan="1" 
 >class="confluenceTd"><p><code>noReplyLogLevel</code></p></td><td colspan="1" 
 >rowspan="1" class="confluenceTd"><p><code>WARN</code></p></td><td colspan="1" 
 >rowspan="1" class="confluenceTd"><p>If sync is enabled this option dictates 
 >MinaConsumer which logging level to use when logg
 ing a there is no reply to send back. Values are: <code>FATAL, ERROR, INFO, 
DEBUG, OFF</code>.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>orderedThreadPoolExecutor</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>true</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>Whether to use ordered thread 
pool, to ensure events are processed orderly on the same 
channel.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>sslContextParameters</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>SSL configuration using an 
<code>org.apache.camel.util.jsse.SSLContextParameters</code> instance. See <a 
shape="rect" class="unresolved" href="#">Using the JSSE Configuration 
Utility</a>.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>autoStartTls</code></p></td><td colspan="1" 
rowspan="1" 
 class="confluenceTd"><p><code>true</code></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>Whether to auto start SSL 
handshake.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><code>cachedAddress</code></td><td colspan="1" rowspan="1" 
class="confluenceTd"><code>true</code></td><td colspan="1" rowspan="1" 
class="confluenceTd"><strong>Camel 2.14:</strong> Whether to create the 
InetAddress once and reuse. Setting this to <code>false</code> allows to pickup 
DNS changes in the network.</td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><code>clientMode</code></td><td colspan="1" rowspan="1" 
class="confluenceTd"><code>false</code></td><td colspan="1" rowspan="1" 
class="confluenceTd"><strong>Camel 2.15:</strong> Consumer only. If the 
<code>clientMode</code> is true, mina consumer will connect the address as a 
TCP client.</td></tr></tbody></table></div></div><h3 
id="MINA2-Usingacustomcodec">Using a custom codec</h3><p>See the Mina how to 
write your ow
 n codec. To use your custom codec with <code>camel-mina</code>, you should 
register your codec in the <a shape="rect" href="registry.html">Registry</a>; 
for example, by creating a bean in the Spring XML file. Then use the 
<code>codec</code> option to specify the bean ID of your codec. See <a 
shape="rect" href="hl7.html">HL7</a> that has a custom codec.</p><h3 
id="MINA2-Samplewithsync=false">Sample with sync=false</h3><p>In this sample, 
Camel exposes a service that listens for TCP connections on port 6200. We use 
the <strong>textline</strong> codec. In our route, we create a Mina consumer 
endpoint that listens on port 6200:</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;mina2:tcp://localhost:&quot; + 
port1 + &quot;?textline=true&amp;sync=false&quot;).to(&quot;mock:result&quot;);
 ]]></script>
 </div></div><p>As the sample is part of a unit test, we test it by sending 
some data to it on port 6200.</p><div class="code panel pdl" 
style="border-width: 1px;"><div class="codeContent panelContent pdl">

Modified: websites/production/camel/content/netty.html
==============================================================================
--- websites/production/camel/content/netty.html (original)
+++ websites/production/camel/content/netty.html Mon Mar  2 15:25:49 2015
@@ -104,7 +104,7 @@
 <script class="theme: Default; brush: java; gutter: false" 
type="syntaxhighlighter"><![CDATA[netty:tcp://localhost:99999[?options]
 netty:udp://remotehost:99999/[?options]
 ]]></script>
-</div></div><p>This component supports producer and consumer endpoints for 
both TCP and UDP.</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="Netty-Options">Options</h3><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>keepAlive</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>true</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>Setting to ensure socket is not 
closed due to inactivity</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>tcpNoDelay</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>
 <code>true</code></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>Setting to improve TCP protocol 
performance</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>backlog</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.9.6/2.10.4/2.11:</strong> Allows to 
configure a backlog for netty consumer (server). Note the backlog is just a 
best effort depending on the OS. Setting this option to a value such as 
<code>200</code>, <code>500</code> or <code>1000</code>, tells the TCP stack 
how long the "accept" queue can be. If this option is not configured, then the 
backlog depends on OS setting.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>broadcast</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>Setting to choose Multicast over UDP</p>
 </td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>connectTimeout</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>10000</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>Time to wait for a socket connection to be 
available. Value is in millis.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>reuseAddress</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>true</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>Setting to facilitate socket 
multiplexing</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>sync</code></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>true</code></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>Setting to set endpoint as one-way or 
request-response</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>synchronous</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.10:</strong> Whether <a shape="rect" 
href="asynchronous-routing-engine.html">Asynchronous Routing Engine</a> is not 
in use. <code>false</code> then the <a shape="rect" 
href="asynchronous-routing-engine.html">Asynchronous Routing Engine</a> is 
used, <code>true</code> to force processing synchronous.</p></td></tr><tr><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>ssl</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>Setting to specify whether SSL 
encryption is applied to this endpoint</p></td></tr><tr><td colspan="1" 
rowspan="1" 
class="confluenceTd"><p><code>sslClientCertHeaders</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> 
When enabled and 
 in SSL mode, then the Netty consumer will enrich the Camel <a shape="rect" 
href="message.html">Message</a> with headers having information about the 
client certificate such as subject name, issuer name, serial number, and the 
valid date range.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>sendBufferSize</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>65536 bytes</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>The TCP/UDP buffer sizes to be 
used during outbound communication. Size is bytes.</p></td></tr><tr><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p><code>receiveBufferSize</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>65536 bytes</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>The TCP/UDP buffer sizes to be 
used during inbound communication. Size is bytes.</p></td></tr><tr><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p><code>option.XXX</code></p></td><t
 d colspan="1" rowspan="1" 
class="confluenceTd"><p><code>null</code></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p><strong>Camel 2.11/2.10.4:</strong> Allows to configure 
additional netty options using "option." as prefix. For example 
"option.child.keepAlive=false" to set the netty option "child.keepAlive=false". 
See the Netty documentation for possible options that can be 
used.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>corePoolSize</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>10</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>The number of allocated threads at 
component startup. Defaults to 10. <strong>Note:</strong> This option is 
removed from Camel 2.9.2 onwards. As we rely on Nettys default 
settings.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>maxPoolSize</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>100</code></p></td><td colspan
 ="1" rowspan="1" class="confluenceTd"><p>The maximum number of threads that 
may be allocated to this endpoint. Defaults to 100. <strong>Note:</strong> This 
option is removed from Camel 2.9.2 onwards. As we rely on Nettys default 
settings.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>disconnect</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>Whether or not to disconnect(close) from 
Netty Channel right after use. Can be used for both consumer and 
producer.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>lazyChannelCreation</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>true</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>Channels can be lazily created 
to avoid exceptions, if the remote server is not up and running when the Camel 
producer is started.</p></td></tr><tr><td colspan="1" rowspa
 n="1" class="confluenceTd"><p><code>transferExchange</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>Only used for TCP. You can 
transfer the exchange over the wire instead of just the body. The following 
fields are transferred: In body, Out body, fault body, In headers, Out headers, 
fault headers, exchange properties, exchange exception. This requires that the 
objects are serializable. Camel will exclude any non-serializable objects and 
log it at WARN level.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>disconnectOnNoReply</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>true</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>If sync is enabled then this 
option dictates NettyConsumer if it should disconnect where there is no reply 
to send back.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>
 noReplyLogLevel</code></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>WARN</code></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>If sync is enabled this option dictates NettyConsumer 
which logging level to use when logging a there is no reply to send back. 
Values are: <code>FATAL, ERROR, INFO, DEBUG, OFF</code>.</p></td></tr><tr><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p><code>serverExceptionCaughtLogLevel</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>WARN</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.11.1:</strong> 
If the server (NettyConsumer) catches an exception then its logged using this 
logging level.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>serverClosedChannelExceptionCaughtLogLevel</code></p></td><td
 colspan="1" rowspan="1" class="confluenceTd"><p><code>DEBUG</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel
  2.11.1:</strong> If the server (NettyConsumer) catches an 
<code>java.nio.channels.ClosedChannelException</code> then its logged using 
this logging level. This is used to avoid logging the closed channel 
exceptions, as clients can disconnect abruptly and then cause a flod of closed 
exceptions in the Netty server.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>allowDefaultCodec</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> The netty 
component installs a default codec if both, encoder/deocder is null and 
textline is false. Setting allowDefaultCodec to false prevents the netty 
component from installing a default codec as the first element in the filter 
chain.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>textline</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> Only used for TCP. If no codec is specified, you can use this 
 >flag to indicate a text line based codec; if not specified or the value is 
 >false, then Object Serialization is assumed over TCP.</p></td></tr><tr><td 
 >colspan="1" rowspan="1" 
 >class="confluenceTd"><p><code>delimiter</code></p></td><td colspan="1" 
 >rowspan="1" class="confluenceTd"><p><code>LINE</code></p></td><td colspan="1" 
 >rowspan="1" class="confluenceTd"><p><strong>Camel 2.4:</strong> The delimiter 
 >to use for the textline codec. Possible values are <code>LINE</code> and 
 ><code>NULL</code>.</p></td></tr><tr><td colspan="1" rowspan="1" 
 >class="confluenceTd"><p><code>decoderMaxLineLength</code></p></td><td 
 >colspan="1" rowspan="1" class="confluenceTd"><p><code>1024</code></p></td><td 
 >colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.4:</strong> 
 >The max line length to use for the textline codec.</p></td></tr><tr><td 
 >colspan="1" rowspan=
 "1" class="confluenceTd"><p><code>autoAppendDelimiter</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> 
Whether or not to auto append missing end delimiter when sending using the 
textline codec.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>encoding</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>Camel 2.4:</strong> The encoding (a 
charset name) to use for the textline codec. If not provided, Camel will use 
the JVM default Charset.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>workerCount</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>Camel 2.9:</strong> When netty 
works on nio mode, it uses defaul
 t workerCount parameter from Netty, which is cpu_core_threads*2. User can use 
this operation to override the default workerCount from 
Netty</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>sslContextParameters</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>Camel 2.9:</strong> SSL 
configuration using an 
<code>org.apache.camel.util.jsse.SSLContextParameters</code> instance. See <a 
shape="rect" href="#Netty-UsingtheJSSEConfigurationUtility">Using the JSSE 
Configuration Utility</a>.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>receiveBufferSizePredictor</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>Camel 2.9:</strong> 
Configures the buffer size predictor. See details at Jetty documentation and 
this <a shape="rect" class="e
 xternal-link" 
href="http://lists.jboss.org/pipermail/netty-users/2010-January/001958.html"; 
rel="nofollow">mail thread</a>.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>requestTimeout</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>0</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><strong>Camel 2.11.1:</strong> Allows to 
use a timeout for the Netty producer when calling a remote server. By default 
no timeout is in use. The value is in milli seconds, so eg <code>30000</code> 
is 30 seconds. The requestTimeout is using Netty's <span>ReadTimeoutHandler to 
trigger the timeout.</span></p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>needClientAuth</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.11:</strong> Configures 
whether the server needs client authentication when using SSL.
 </p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>orderedThreadPoolExecutor</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.10.2:</strong> 
Whether to use ordered thread pool, to ensure events are processed orderly on 
the same channel. See details at the netty javadoc of 
<code>org.jboss.netty.handler.execution.OrderedMemoryAwareThreadPoolExecutor</code>
 for more details.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>maximumPoolSize</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>16</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><strong>Camel 2.10.2:</strong> The core 
pool size for the ordered thread pool, if its in use.</p><p><strong>Since Camel 
2.14.1</strong>: This option is move the NettyComponent.</p></td></tr><tr><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code
 >producerPoolEnabled</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.10.4/Camel 2.11:</strong> Producer 
 >only. Whether producer pool is enabled or not. <strong>Important:</strong> Do 
 >not turn this off, as the pooling is needed for handling concurrency and 
 >reliable request/reply.</p></td></tr><tr><td colspan="1" rowspan="1" 
 >class="confluenceTd"><p><code>producerPoolMaxActive</code></p></td><td 
 >colspan="1" rowspan="1" class="confluenceTd"><p><code>-1</code></p></td><td 
 >colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 
 >2.10.3:</strong> Producer only. Sets the cap on the number of objects that 
 >can be allocated by the pool (checked out to clients, or idle awaiting 
 >checkout) at a given time. Use a negative value for no 
 >limit.</p></td></tr><tr><td colspan="1" rowspan="1" 
 >class="confluenceTd"><p><code>producerPoolMinIdle</code></p></td><td 
 >colspan="1" rowspan="1" class
 ="confluenceTd"><p><code>0</code></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p><strong>Camel 2.10.3:</strong> Producer only. Sets the 
minimum number of instances allowed in the producer pool before the evictor 
thread (if active) spawns new objects.</p></td></tr><tr><td colspan="1" 
rowspan="1" 
class="confluenceTd"><p><code>producerPoolMaxIdle</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>100</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.10.3:</strong> 
Producer only. Sets the cap on the number of "idle" instances in the 
pool.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>producerPoolMinEvictableIdle</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>30000</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.10.3:</strong> 
Producer only. Sets the minimum amount of time (value in millis) an object may 
sit idle in the pool before 
 it is eligible for eviction by the idle object evictor.</p></td></tr><tr><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p><code>bootstrapConfiguration</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>Camel 2.12:</strong> 
Consumer only. Allows to configure the Netty ServerBootstrap options using a 
<code>org.apache.camel.component.netty.NettyServerBootstrapConfiguration</code> 
instance. This can be used to reuse the same configuration for multiple 
consumers, to align their configuration more easily.</p></td></tr><tr><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p><code>bossPoll</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>Camel 2.12:</strong> To use a 
explicit <code>org.jboss.netty.channel.socket.nio.BossPool</code> as the boss 
thread pool. For example to share a thread
  pool with multiple consumers. By default each consumer has their own boss 
pool with 1 core thread.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>workerPool</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>Camel 2.12:</strong> To use a 
explicit <code>org.jboss.netty.channel.socket.nio.WorkerPool</code> as the 
worker thread pool. For example to share a thread pool with multiple consumers. 
By default each consumer has their own worker pool with 2 x cpu count core 
threads.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>networkInterface</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>Camel 2.12:</strong> Consumer only. 
When using UDP then this option can be used to specify a network interface by 
its name, such as <code>eth0</
 code> to join a multicast group.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>udpConnectionlessSending</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><code>false</code></td><td 
colspan="1" rowspan="1" class="confluenceTd"><strong>Camel 2.15:</strong> 
Producer only. &#160;This option supports connection less udp sending which is 
a real fire and forget. A connected udp send receive the 
PortUnreachableException if no one is listen on the receiving 
port.</td></tr></tbody></table></div></div><h3 
id="Netty-RegistrybasedOptions">Registry based Options</h3><p>Codec Handlers 
and SSL Keystores can be enlisted in the <a shape="rect" 
href="registry.html">Registry</a>, such as in the Spring XML file.<br 
clear="none"> The values that could be passed in, are the following:</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>Description</p></th></tr><tr><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p><code>passphrase</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>password setting to use in order to 
encrypt/decrypt payloads sent using SSH</p></td></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>keyStoreFormat</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>keystore format to be used for 
payload encryption. Defaults to "JKS" if not set</p></td></tr><tr><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p><code>securityProvider</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>Security provider to be used for payload 
encryption. Defaults to "SunX509" if not set.</p></td></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>keyStoreFile</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><strong>deprecated:</strong> 
Client side certificate keystore to be used for en
 cryption</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>trustStoreFile</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><strong>deprecated:</strong> Server side 
certificate keystore to be used for encryption</p></td></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>keyStoreResource</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.11.1:</strong> 
Client side certificate keystore to be used for encryption. Is loaded by 
default from classpath, but you can prefix with <code>"classpath:"</code>, 
<code>"file:"</code>, or <code>"http:"</code> to load the resource from 
different systems.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>trustStoreResource</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><strong>Camel 2.11.1:</strong> Server side 
certificate keystore to be used for encryption. Is loaded by default from 
classpath, but you can prefix with <
 code>"classpath:"</code>, <code>"file:"</code>, or <code>"http:"</code> to 
load the resource from different systems.</p></td></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>sslHandler</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>Reference to a class that could 
be used to return an SSL Handler</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>encoder</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>A custom <code>ChannelHandler</code> class 
that can be used to perform special marshalling of outbound payloads. Must 
override 
<code>org.jboss.netty.channel.ChannelDownStreamHandler</code>.</p></td></tr><tr><td
 colspan="1" rowspan="1" 
class="confluenceTd"><p><code>encorders</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>A list of encoders to be used. You can use 
a String which have values separated by comma, and have the values be looked up 
in the <a shape="rect" href="registry.html">Reg
 istry</a>. Just remember to prefix the value with # so Camel knows it should 
lookup.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>decoder</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>A custom <code>ChannelHandler</code> class 
that can be used to perform special marshalling of inbound payloads. Must 
override 
<code>org.jboss.netty.channel.ChannelUpStreamHandler</code>.</p></td></tr><tr><td
 colspan="1" rowspan="1" 
class="confluenceTd"><p><code>decoders</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>A list of decoders to be used. You can use 
a String which have values separated by comma, and have the values be looked up 
in the <a shape="rect" href="registry.html">Registry</a>. Just remember to 
prefix the value with # so Camel knows it should 
lookup.</p></td></tr></tbody></table></div></div><p><strong>Important:</strong> 
Read below about using non shareable encoders/decoders.</p><h4 
id="Netty-Usingnonshareableencoder
 sordecoders">Using non shareable encoders or decoders</h4><p>If your encoders 
or decoders is not shareable (eg they have the @Shareable class annotation), 
then your encoder/decoder must implement the 
<code>org.apache.camel.component.netty.ChannelHandlerFactory</code> interface, 
and return a new instance in the <code>newChannelHandler</code> method. This is 
to ensure the encoder/decoder can safely be used. If this is not the case, then 
the Netty component will log a WARN when<br clear="none"> an endpoint is 
created.</p><p>The Netty component offers a 
<code>org.apache.camel.component.netty.ChannelHandlerFactories</code> factory 
class, that has a number of commonly used methods.</p><h3 
id="Netty-SendingMessagesto/fromaNettyendpoint">Sending Messages to/from a 
Netty endpoint</h3><h4 id="Netty-NettyProducer">Netty Producer</h4><p>In 
Producer mode, the component provides the ability to send payloads to a socket 
endpoint<br clear="none"> using either TCP or UDP protocols (with optional SSL
  support).</p><p>The producer mode supports both one-way and request-response 
based operations.</p><h4 id="Netty-NettyConsumer">Netty Consumer</h4><p>In 
Consumer mode, the component provides the ability to:</p><ul 
class="alternate"><li>listen on a specified socket using either TCP or UDP 
protocols (with optional SSL support),</li><li>receive requests on the socket 
using text/xml, binary and serialized object based payloads and</li><li>send 
them along on a route as message exchanges.</li></ul><p>The consumer mode 
supports both one-way and request-response based 
operations.</p><p>&#160;</p><h3 id="Netty-Headers">Headers</h3><p>The following 
headers are filled for the exchanges created by the Netty consumer:</p><div 
class="confluenceTableSmall"><div class="table-wrap"><table 
class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Header key</p></th><th colspan="1" rowspan="1" 
class="confluenceTh">Class</th><th colspan="1" rowspan="1" class="confluenceTh">
 <p>Description</p></th></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>NettyConstants.NETTY_CHANNEL_HANDLER_CONTEXT</code>
 / <code>CamelNettyChannelHandlerContext</code></p></td><td colspan="1" 
rowspan="1" 
class="confluenceTd"><code>org.jboss.netty.channel.ChannelHandlerContext</code></td><td
 colspan="1" rowspan="1" 
class="confluenceTd"><p><code><span>ChannelHandlerContext 
</span></code>instance associated with the connection received by 
netty.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>NettyConstants.NETTY_MESSAGE_EVENT</code> / 
<code>CamelNettyMessageEvent</code></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><code><span>org.jboss.netty.channel.</span>MessageEvent</code></td><td
 colspan="1" rowspan="1" class="confluenceTd"><p><span><code><span>MessageEvent 
</span></code>instance associated with the connection received by 
netty.</span></p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>NettyConstan
 ts.NETTY_REMOTE_ADDRESS</code> / 
<code>CamelNettyRemoteAddress</code></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><code>java.net.SocketAddress</code></td><td colspan="1" 
rowspan="1" class="confluenceTd">Remote address of the incoming socket 
connection.</td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><code>NettyConstants.NETTY_LOCAL_ADDRESS</code> / 
<code>CamelNettyLocalAddress</code></td><td colspan="1" rowspan="1" 
class="confluenceTd"><code><span>java.net.</span><span>SocketAddress</span></code></td><td
 colspan="1" rowspan="1" class="confluenceTd"><span>Local address of the 
incoming socket connection.</span></td></tr></tbody></table></div></div><h3 
id="Netty-UsageSamples">Usage Samples</h3><h4 
id="Netty-AUDPNettyendpointusingRequest-Replyandserializedobjectpayload">A UDP 
Netty endpoint using Request-Reply and serialized object payload</h4><div 
class="code panel pdl" style="border-width: 1px;"><div class="codeContent 
panelContent pdl">
+</div></div><p>This component supports producer and consumer endpoints for 
both TCP and UDP.</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="Netty-Options">Options</h3><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>keepAlive</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>true</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>Setting to ensure socket is not 
closed due to inactivity</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>tcpNoDelay</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>
 <code>true</code></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>Setting to improve TCP protocol 
performance</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>backlog</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.9.6/2.10.4/2.11:</strong> Allows to 
configure a backlog for netty consumer (server). Note the backlog is just a 
best effort depending on the OS. Setting this option to a value such as 
<code>200</code>, <code>500</code> or <code>1000</code>, tells the TCP stack 
how long the "accept" queue can be. If this option is not configured, then the 
backlog depends on OS setting.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>broadcast</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>Setting to choose Multicast over UDP</p>
 </td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>connectTimeout</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>10000</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>Time to wait for a socket connection to be 
available. Value is in millis.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>reuseAddress</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>true</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>Setting to facilitate socket 
multiplexing</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>sync</code></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>true</code></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>Setting to set endpoint as one-way or 
request-response</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>synchronous</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.10:</strong> Whether <a shape="rect" 
href="asynchronous-routing-engine.html">Asynchronous Routing Engine</a> is not 
in use. <code>false</code> then the <a shape="rect" 
href="asynchronous-routing-engine.html">Asynchronous Routing Engine</a> is 
used, <code>true</code> to force processing synchronous.</p></td></tr><tr><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>ssl</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>Setting to specify whether SSL 
encryption is applied to this endpoint</p></td></tr><tr><td colspan="1" 
rowspan="1" 
class="confluenceTd"><p><code>sslClientCertHeaders</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> 
When enabled and 
 in SSL mode, then the Netty consumer will enrich the Camel <a shape="rect" 
href="message.html">Message</a> with headers having information about the 
client certificate such as subject name, issuer name, serial number, and the 
valid date range.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>sendBufferSize</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>65536 bytes</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>The TCP/UDP buffer sizes to be 
used during outbound communication. Size is bytes.</p></td></tr><tr><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p><code>receiveBufferSize</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>65536 bytes</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>The TCP/UDP buffer sizes to be 
used during inbound communication. Size is bytes.</p></td></tr><tr><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p><code>option.XXX</code></p></td><t
 d colspan="1" rowspan="1" 
class="confluenceTd"><p><code>null</code></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p><strong>Camel 2.11/2.10.4:</strong> Allows to configure 
additional netty options using "option." as prefix. For example 
"option.child.keepAlive=false" to set the netty option "child.keepAlive=false". 
See the Netty documentation for possible options that can be 
used.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>corePoolSize</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>10</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>The number of allocated threads at 
component startup. Defaults to 10. <strong>Note:</strong> This option is 
removed from Camel 2.9.2 onwards. As we rely on Nettys default 
settings.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>maxPoolSize</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>100</code></p></td><td colspan
 ="1" rowspan="1" class="confluenceTd"><p>The maximum number of threads that 
may be allocated to this endpoint. Defaults to 100. <strong>Note:</strong> This 
option is removed from Camel 2.9.2 onwards. As we rely on Nettys default 
settings.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>disconnect</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>Whether or not to disconnect(close) from 
Netty Channel right after use. Can be used for both consumer and 
producer.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>lazyChannelCreation</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>true</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>Channels can be lazily created 
to avoid exceptions, if the remote server is not up and running when the Camel 
producer is started.</p></td></tr><tr><td colspan="1" rowspa
 n="1" class="confluenceTd"><p><code>transferExchange</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>Only used for TCP. You can 
transfer the exchange over the wire instead of just the body. The following 
fields are transferred: In body, Out body, fault body, In headers, Out headers, 
fault headers, exchange properties, exchange exception. This requires that the 
objects are serializable. Camel will exclude any non-serializable objects and 
log it at WARN level.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>disconnectOnNoReply</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>true</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>If sync is enabled then this 
option dictates NettyConsumer if it should disconnect where there is no reply 
to send back.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>
 noReplyLogLevel</code></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>WARN</code></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p>If sync is enabled this option dictates NettyConsumer 
which logging level to use when logging a there is no reply to send back. 
Values are: <code>FATAL, ERROR, INFO, DEBUG, OFF</code>.</p></td></tr><tr><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p><code>serverExceptionCaughtLogLevel</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>WARN</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.11.1:</strong> 
If the server (NettyConsumer) catches an exception then its logged using this 
logging level.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>serverClosedChannelExceptionCaughtLogLevel</code></p></td><td
 colspan="1" rowspan="1" class="confluenceTd"><p><code>DEBUG</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel
  2.11.1:</strong> If the server (NettyConsumer) catches an 
<code>java.nio.channels.ClosedChannelException</code> then its logged using 
this logging level. This is used to avoid logging the closed channel 
exceptions, as clients can disconnect abruptly and then cause a flod of closed 
exceptions in the Netty server.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>allowDefaultCodec</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> The netty 
component installs a default codec if both, encoder/deocder is null and 
textline is false. Setting allowDefaultCodec to false prevents the netty 
component from installing a default codec as the first element in the filter 
chain.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>textline</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> Only used for TCP. If no codec is specified, you can use this 
 >flag to indicate a text line based codec; if not specified or the value is 
 >false, then Object Serialization is assumed over TCP.</p></td></tr><tr><td 
 >colspan="1" rowspan="1" 
 >class="confluenceTd"><p><code>delimiter</code></p></td><td colspan="1" 
 >rowspan="1" class="confluenceTd"><p><code>LINE</code></p></td><td colspan="1" 
 >rowspan="1" class="confluenceTd"><p><strong>Camel 2.4:</strong> The delimiter 
 >to use for the textline codec. Possible values are <code>LINE</code> and 
 ><code>NULL</code>.</p></td></tr><tr><td colspan="1" rowspan="1" 
 >class="confluenceTd"><p><code>decoderMaxLineLength</code></p></td><td 
 >colspan="1" rowspan="1" class="confluenceTd"><p><code>1024</code></p></td><td 
 >colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.4:</strong> 
 >The max line length to use for the textline codec.</p></td></tr><tr><td 
 >colspan="1" rowspan=
 "1" class="confluenceTd"><p><code>autoAppendDelimiter</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> 
Whether or not to auto append missing end delimiter when sending using the 
textline codec.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>encoding</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>Camel 2.4:</strong> The encoding (a 
charset name) to use for the textline codec. If not provided, Camel will use 
the JVM default Charset.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>workerCount</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>Camel 2.9:</strong> When netty 
works on nio mode, it uses defaul
 t workerCount parameter from Netty, which is cpu_core_threads*2. User can use 
this operation to override the default workerCount from 
Netty</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>sslContextParameters</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>Camel 2.9:</strong> SSL 
configuration using an 
<code>org.apache.camel.util.jsse.SSLContextParameters</code> instance. See <a 
shape="rect" href="#Netty-UsingtheJSSEConfigurationUtility">Using the JSSE 
Configuration Utility</a>.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>receiveBufferSizePredictor</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>Camel 2.9:</strong> 
Configures the buffer size predictor. See details at Jetty documentation and 
this <a shape="rect" class="e
 xternal-link" 
href="http://lists.jboss.org/pipermail/netty-users/2010-January/001958.html"; 
rel="nofollow">mail thread</a>.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>requestTimeout</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>0</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><strong>Camel 2.11.1:</strong> Allows to 
use a timeout for the Netty producer when calling a remote server. By default 
no timeout is in use. The value is in milli seconds, so eg <code>30000</code> 
is 30 seconds. The requestTimeout is using Netty's <span>ReadTimeoutHandler to 
trigger the timeout.</span></p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>needClientAuth</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.11:</strong> Configures 
whether the server needs client authentication when using SSL.
 </p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>orderedThreadPoolExecutor</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.10.2:</strong> 
Whether to use ordered thread pool, to ensure events are processed orderly on 
the same channel. See details at the netty javadoc of 
<code>org.jboss.netty.handler.execution.OrderedMemoryAwareThreadPoolExecutor</code>
 for more details.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>maximumPoolSize</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>16</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><strong>Camel 2.10.2:</strong> The core 
pool size for the ordered thread pool, if its in use.</p><p><strong>Since Camel 
2.14.1</strong>: This option is move the NettyComponent.</p></td></tr><tr><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code
 >producerPoolEnabled</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.10.4/Camel 2.11:</strong> Producer 
 >only. Whether producer pool is enabled or not. <strong>Important:</strong> Do 
 >not turn this off, as the pooling is needed for handling concurrency and 
 >reliable request/reply.</p></td></tr><tr><td colspan="1" rowspan="1" 
 >class="confluenceTd"><p><code>producerPoolMaxActive</code></p></td><td 
 >colspan="1" rowspan="1" class="confluenceTd"><p><code>-1</code></p></td><td 
 >colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 
 >2.10.3:</strong> Producer only. Sets the cap on the number of objects that 
 >can be allocated by the pool (checked out to clients, or idle awaiting 
 >checkout) at a given time. Use a negative value for no 
 >limit.</p></td></tr><tr><td colspan="1" rowspan="1" 
 >class="confluenceTd"><p><code>producerPoolMinIdle</code></p></td><td 
 >colspan="1" rowspan="1" class
 ="confluenceTd"><p><code>0</code></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><p><strong>Camel 2.10.3:</strong> Producer only. Sets the 
minimum number of instances allowed in the producer pool before the evictor 
thread (if active) spawns new objects.</p></td></tr><tr><td colspan="1" 
rowspan="1" 
class="confluenceTd"><p><code>producerPoolMaxIdle</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>100</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.10.3:</strong> 
Producer only. Sets the cap on the number of "idle" instances in the 
pool.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>producerPoolMinEvictableIdle</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><code>30000</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.10.3:</strong> 
Producer only. Sets the minimum amount of time (value in millis) an object may 
sit idle in the pool before 
 it is eligible for eviction by the idle object evictor.</p></td></tr><tr><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p><code>bootstrapConfiguration</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>Camel 2.12:</strong> 
Consumer only. Allows to configure the Netty ServerBootstrap options using a 
<code>org.apache.camel.component.netty.NettyServerBootstrapConfiguration</code> 
instance. This can be used to reuse the same configuration for multiple 
consumers, to align their configuration more easily.</p></td></tr><tr><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p><code>bossPoll</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>Camel 2.12:</strong> To use a 
explicit <code>org.jboss.netty.channel.socket.nio.BossPool</code> as the boss 
thread pool. For example to share a thread
  pool with multiple consumers. By default each consumer has their own boss 
pool with 1 core thread.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>workerPool</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>Camel 2.12:</strong> To use a 
explicit <code>org.jboss.netty.channel.socket.nio.WorkerPool</code> as the 
worker thread pool. For example to share a thread pool with multiple consumers. 
By default each consumer has their own worker pool with 2 x cpu count core 
threads.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>networkInterface</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>Camel 2.12:</strong> Consumer only. 
When using UDP then this option can be used to specify a network interface by 
its name, such as <code>eth0</
 code> to join a multicast group.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>udpConnectionlessSending</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><code>false</code></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.15:</strong> 
Producer only. &#160;This option supports connection less udp sending which is 
a real fire and forget. A connected udp send receive the 
PortUnreachableException if no one is listen on the receiving 
port.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><code>clientMode</code></td><td colspan="1" rowspan="1" 
class="confluenceTd"><code>false</code></td><td colspan="1" rowspan="1" 
class="confluenceTd"><strong>Camel 2.15:</strong> Consumer only. If the 
<code>clientMode</code> is true, netty consumer will connect the address as a 
TCP client.</td></tr></tbody></table></div></div><h3 
id="Netty-RegistrybasedOptions">Registry based Options</h3><p>Codec Handlers 
and SSL Keystores 
 can be enlisted in the <a shape="rect" href="registry.html">Registry</a>, such 
as in the Spring XML file.<br clear="none"> The values that could be passed in, 
are the following:</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>Description</p></th></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>passphrase</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>password setting to use in 
order to encrypt/decrypt payloads sent using SSH</p></td></tr><tr><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p><code>keyStoreFormat</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>keystore format to be used for payload 
encryption. Defaults to "JKS" if not set</p></td></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>securityProvider</code></p></td><td 
colspan="1
 " rowspan="1" class="confluenceTd"><p>Security provider to be used for payload 
encryption. Defaults to "SunX509" if not set.</p></td></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>keyStoreFile</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><strong>deprecated:</strong> 
Client side certificate keystore to be used for encryption</p></td></tr><tr><td 
colspan="1" rowspan="1" 
class="confluenceTd"><p><code>trustStoreFile</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p><strong>deprecated:</strong> Server side 
certificate keystore to be used for encryption</p></td></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>keyStoreResource</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.11.1:</strong> 
Client side certificate keystore to be used for encryption. Is loaded by 
default from classpath, but you can prefix with <code>"classpath:"</code>, 
<code>"file:"</code>, or <code>"http:"</code> 
 to load the resource from different systems.</p></td></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>trustStoreResource</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.11.1:</strong> 
Server side certificate keystore to be used for encryption. Is loaded by 
default from classpath, but you can prefix with <code>"classpath:"</code>, 
<code>"file:"</code>, or <code>"http:"</code> to load the resource from 
different systems.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>sslHandler</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>Reference to a class that could be used to 
return an SSL Handler</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>encoder</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>A custom <code>ChannelHandler</code> class 
that can be used to perform special marshalling of outbound payloads. Must 
override <code>org.jboss.netty.chan
 nel.ChannelDownStreamHandler</code>.</p></td></tr><tr><td colspan="1" 
rowspan="1" class="confluenceTd"><p><code>encorders</code></p></td><td 
colspan="1" rowspan="1" class="confluenceTd"><p>A list of encoders to be used. 
You can use a String which have values separated by comma, and have the values 
be looked up in the <a shape="rect" href="registry.html">Registry</a>. Just 
remember to prefix the value with # so Camel knows it should 
lookup.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>decoder</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>A custom <code>ChannelHandler</code> class 
that can be used to perform special marshalling of inbound payloads. Must 
override 
<code>org.jboss.netty.channel.ChannelUpStreamHandler</code>.</p></td></tr><tr><td
 colspan="1" rowspan="1" 
class="confluenceTd"><p><code>decoders</code></p></td><td colspan="1" 
rowspan="1" class="confluenceTd"><p>A list of decoders to be used. You can use 
a String which have va
 lues separated by comma, and have the values be looked up in the <a 
shape="rect" href="registry.html">Registry</a>. Just remember to prefix the 
value with # so Camel knows it should 
lookup.</p></td></tr></tbody></table></div></div><p><strong>Important:</strong> 
Read below about using non shareable encoders/decoders.</p><h4 
id="Netty-Usingnonshareableencodersordecoders">Using non shareable encoders or 
decoders</h4><p>If your encoders or decoders is not shareable (eg they have the 
@Shareable class annotation), then your encoder/decoder must implement the 
<code>org.apache.camel.component.netty.ChannelHandlerFactory</code> interface, 
and return a new instance in the <code>newChannelHandler</code> method. This is 
to ensure the encoder/decoder can safely be used. If this is not the case, then 
the Netty component will log a WARN when<br clear="none"> an endpoint is 
created.</p><p>The Netty component offers a 
<code>org.apache.camel.component.netty.ChannelHandlerFactories</code> factory 
clas
 s, that has a number of commonly used methods.</p><h3 
id="Netty-SendingMessagesto/fromaNettyendpoint">Sending Messages to/from a 
Netty endpoint</h3><h4 id="Netty-NettyProducer">Netty Producer</h4><p>In 
Producer mode, the component provides the ability to send payloads to a socket 
endpoint<br clear="none"> using either TCP or UDP protocols (with optional SSL 
support).</p><p>The producer mode supports both one-way and request-response 
based operations.</p><h4 id="Netty-NettyConsumer">Netty Consumer</h4><p>In 
Consumer mode, the component provides the ability to:</p><ul 
class="alternate"><li>listen on a specified socket using either TCP or UDP 
protocols (with optional SSL support),</li><li>receive requests on the socket 
using text/xml, binary and serialized object based payloads and</li><li>send 
them along on a route as message exchanges.</li></ul><p>The consumer mode 
supports both one-way and request-response based 
operations.</p><p>&#160;</p><h3 id="Netty-Headers">Headers</h3><p>The f
 ollowing headers are filled for the exchanges created by the Netty 
consumer:</p><div class="confluenceTableSmall"><div class="table-wrap"><table 
class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Header key</p></th><th colspan="1" rowspan="1" 
class="confluenceTh">Class</th><th colspan="1" rowspan="1" 
class="confluenceTh"><p>Description</p></th></tr><tr><td colspan="1" 
rowspan="1" 
class="confluenceTd"><p><code>NettyConstants.NETTY_CHANNEL_HANDLER_CONTEXT</code>
 / <code>CamelNettyChannelHandlerContext</code></p></td><td colspan="1" 
rowspan="1" 
class="confluenceTd"><code>org.jboss.netty.channel.ChannelHandlerContext</code></td><td
 colspan="1" rowspan="1" 
class="confluenceTd"><p><code><span>ChannelHandlerContext 
</span></code>instance associated with the connection received by 
netty.</p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>NettyConstants.NETTY_MESSAGE_EVENT</code> / 
<code>CamelNettyMessageEvent</code></p></td><td col
 span="1" rowspan="1" 
class="confluenceTd"><code><span>org.jboss.netty.channel.</span>MessageEvent</code></td><td
 colspan="1" rowspan="1" class="confluenceTd"><p><span><code><span>MessageEvent 
</span></code>instance associated with the connection received by 
netty.</span></p></td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><p><code>NettyConstants.NETTY_REMOTE_ADDRESS</code> / 
<code>CamelNettyRemoteAddress</code></p></td><td colspan="1" rowspan="1" 
class="confluenceTd"><code>java.net.SocketAddress</code></td><td colspan="1" 
rowspan="1" class="confluenceTd">Remote address of the incoming socket 
connection.</td></tr><tr><td colspan="1" rowspan="1" 
class="confluenceTd"><code>NettyConstants.NETTY_LOCAL_ADDRESS</code> / 
<code>CamelNettyLocalAddress</code></td><td colspan="1" rowspan="1" 
class="confluenceTd"><code><span>java.net.</span><span>SocketAddress</span></code></td><td
 colspan="1" rowspan="1" class="confluenceTd"><span>Local address of the 
incoming socket connection.</
 span></td></tr></tbody></table></div></div><h3 id="Netty-UsageSamples">Usage 
Samples</h3><h4 
id="Netty-AUDPNettyendpointusingRequest-Replyandserializedobjectpayload">A UDP 
Netty endpoint using Request-Reply and serialized object payload</h4><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() {
   public void configure() {
     from(&quot;netty:udp://localhost:5155?sync=true&quot;)


Reply via email to