Modified: websites/production/camel/content/book-in-one-page.html ============================================================================== --- websites/production/camel/content/book-in-one-page.html (original) +++ websites/production/camel/content/book-in-one-page.html Mon Mar 2 15:25:49 2015 @@ -4128,11 +4128,11 @@ While not actual tutorials you might fin </div> </div> <h2 id="BookInOnePage-Preface">Preface</h2><p>This tutorial aims to guide the reader through the stages of creating a project which uses Camel to facilitate the routing of messages from a JMS queue to a <a shape="rect" class="external-link" href="http://www.springramework.org" rel="nofollow">Spring</a> service. The route works in a synchronous fashion returning a response to the client.</p><p><style type="text/css">/*<![CDATA[*/ -div.rbtoc1425122337904 {padding: 0px;} -div.rbtoc1425122337904 ul {list-style: disc;margin-left: 0px;} -div.rbtoc1425122337904 li {margin-left: 0px;padding-left: 0px;} +div.rbtoc1425309761321 {padding: 0px;} +div.rbtoc1425309761321 ul {list-style: disc;margin-left: 0px;} +div.rbtoc1425309761321 li {margin-left: 0px;padding-left: 0px;} -/*]]>*/</style></p><div class="toc-macro rbtoc1425122337904"> +/*]]>*/</style></p><div class="toc-macro rbtoc1425309761321"> <ul class="toc-indentation"><li><a shape="rect" href="#Tutorial-JmsRemoting-TutorialonSpringRemotingwithJMS">Tutorial on Spring Remoting with JMS</a></li><li><a shape="rect" href="#Tutorial-JmsRemoting-Preface">Preface</a></li><li><a shape="rect" href="#Tutorial-JmsRemoting-Prerequisites">Prerequisites</a></li><li><a shape="rect" href="#Tutorial-JmsRemoting-Distribution">Distribution</a></li><li><a shape="rect" href="#Tutorial-JmsRemoting-About">About</a></li><li><a shape="rect" href="#Tutorial-JmsRemoting-CreatetheCamelProject">Create the Camel Project</a> <ul class="toc-indentation"><li><a shape="rect" href="#Tutorial-JmsRemoting-UpdatethePOMwithDependencies">Update the POM with Dependencies</a></li></ul> </li><li><a shape="rect" href="#Tutorial-JmsRemoting-WritingtheServer">Writing the Server</a> @@ -6318,11 +6318,11 @@ So we completed the last piece in the pi <style type="text/css">/*<![CDATA[*/ -div.rbtoc1425122339126 {padding: 0px;} -div.rbtoc1425122339126 ul {list-style: disc;margin-left: 0px;} -div.rbtoc1425122339126 li {margin-left: 0px;padding-left: 0px;} +div.rbtoc1425309765544 {padding: 0px;} +div.rbtoc1425309765544 ul {list-style: disc;margin-left: 0px;} +div.rbtoc1425309765544 li {margin-left: 0px;padding-left: 0px;} -/*]]>*/</style><div class="toc-macro rbtoc1425122339126"> +/*]]>*/</style><div class="toc-macro rbtoc1425309765544"> <ul class="toc-indentation"><li><a shape="rect" href="#Tutorial-AXIS-Camel-TutorialusingAxis1.4withApacheCamel">Tutorial using Axis 1.4 with Apache Camel</a> <ul class="toc-indentation"><li><a shape="rect" href="#Tutorial-AXIS-Camel-Prerequisites">Prerequisites</a></li><li><a shape="rect" href="#Tutorial-AXIS-Camel-Distribution">Distribution</a></li><li><a shape="rect" href="#Tutorial-AXIS-Camel-Introduction">Introduction</a></li><li><a shape="rect" href="#Tutorial-AXIS-Camel-SettinguptheprojecttorunAxis">Setting up the project to run Axis</a> <ul class="toc-indentation"><li><a shape="rect" href="#Tutorial-AXIS-Camel-Maven2">Maven 2</a></li><li><a shape="rect" href="#Tutorial-AXIS-Camel-wsdl">wsdl</a></li><li><a shape="rect" href="#Tutorial-AXIS-Camel-ConfiguringAxis">Configuring Axis</a></li><li><a shape="rect" href="#Tutorial-AXIS-Camel-RunningtheExample">Running the Example</a></li></ul> @@ -18853,11 +18853,11 @@ template.send("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.rbtoc1425122352825 {padding: 0px;} -div.rbtoc1425122352825 ul {list-style: disc;margin-left: 0px;} -div.rbtoc1425122352825 li {margin-left: 0px;padding-left: 0px;} +div.rbtoc1425309834580 {padding: 0px;} +div.rbtoc1425309834580 ul {list-style: disc;margin-left: 0px;} +div.rbtoc1425309834580 li {margin-left: 0px;padding-left: 0px;} -/*]]>*/</style></p><div class="toc-macro rbtoc1425122352825"> +/*]]>*/</style></p><div class="toc-macro rbtoc1425309834580"> <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> @@ -24916,79 +24916,31 @@ builder.unseen().body(Op.not, "Spam SearchTerm term = builder.build(); ]]></script> </div></div><p></p><h3 id="BookInOnePage-SeeAlso.59">See Also</h3> -<ul><li><a shape="rect" href="configuring-camel.html">Configuring Camel</a></li><li><a shape="rect" href="component.html">Component</a></li><li><a shape="rect" href="endpoint.html">Endpoint</a></li><li><a shape="rect" href="getting-started.html">Getting Started</a></li></ul> <h2 id="BookInOnePage-MINAComponent">MINA Component</h2> -<p><strong>Deprecated</strong></p> - - <div class="aui-message problem shadowed information-macro"> +<ul><li><a shape="rect" href="configuring-camel.html">Configuring Camel</a></li><li><a shape="rect" href="component.html">Component</a></li><li><a shape="rect" href="endpoint.html">Endpoint</a></li><li><a shape="rect" href="getting-started.html">Getting Started</a></li></ul> <h2 id="BookInOnePage-MINAComponent">MINA Component</h2><p><strong>Deprecated</strong></p> <div class="aui-message problem shadowed information-macro"> <p class="title">Deprecated</p> <span class="aui-icon icon-problem">Icon</span> <div class="message-content"> - -<p>This component is deprecated as the Apache Mina 1.x project is EOL. Instead use <a shape="rect" href="mina2.html">Mina2</a> or <a shape="rect" href="netty.html">Netty</a> instead.</p> + <p>This component is deprecated as the Apache Mina 1.x project is EOL. Instead use <a shape="rect" href="mina2.html">MINA2</a> or <a shape="rect" href="netty.html">Netty</a> instead.</p> </div> </div> - - -<p>The <strong>mina:</strong> component is a transport for working with <a shape="rect" class="external-link" href="http://mina.apache.org/">Apache MINA</a></p> - -<p>Maven users will need to add the following dependency to their <code>pom.xml</code> for this component:</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[ -<dependency> +<p>The <strong>mina:</strong> component is a transport for working with <a shape="rect" class="external-link" href="http://mina.apache.org/">Apache MINA</a></p><p>Maven users will need to add the following dependency to their <code>pom.xml</code> for this component:</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[<dependency> <groupId>org.apache.camel</groupId> <artifactId>camel-mina</artifactId> <version>x.x.x</version> <!-- use the same version as your Camel core version --> </dependency> ]]></script> -</div></div> - -<h3 id="BookInOnePage-URIformat.44">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[ -mina:tcp://hostname[:port][?options] +</div></div><h3 id="BookInOnePage-URIformat.44">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[mina:tcp://hostname[:port][?options] mina:udp://hostname[:port][?options] mina: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. See the <a shape="rect" class="external-link" href="http://mina.apache.org/report/1.1/apidocs/org/apache/mina/transport/vmpipe/package-summary.html">MINA VM-Pipe API documentation</a> for details.</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—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 to the URI in the following format, <code>?option=value&option=value&...</code></p> - -<h3 id="BookInOnePage-Options.54">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>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 must use the <code>#</code> notati on to look up your codec in the <a shape="rect" href="registry.html">Registry</a>. For example, use <code>#myCodec</code> to look up a bean with the <code>id</code> value, <code>myCodec</code>. </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> <strong>Camel 2.3:</strong> 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. Possible 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-li nk" 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> value must be one of the > following:</p> -<ul><li><strong>Camel 2.2:</strong> comma-separated list of bean references (e.g. <code>#filterBean1,#filterBean2</code>) where each bean must be of type <code>org.apache.mina.common.IoFilter</code>.</li><li><strong>before Camel 2.2:</strong> a reference to a bean of type <code>List<org.apache.mina.common.IoFilter></code>.</li></ul> -</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> As of 2.1, you can 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> As of 2.1, you can 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>producerPoolSize</code> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> 16 </p></td><td colspan="1" rowspan="1" class= "confluenceTd"><p> The TCP producer is thread safe and supports concurrency much better. This option allows you to configure the number of threads in its thread pool for concurrent producers. <strong>Note:</strong> Camel has a pooled service which ensured it was already thread safe and supported concurrency already. </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> <strong>Camel 2.3:</strong> 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> <strong>Camel 2.3:</strong> If sync is enabled this option dictates MinaConsumer 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></tbody></table></div> -</div> - -<h3 id="BookInOnePage-Usingacustomcodec">Using a custom codec</h3> - -<p>See the <a shape="rect" class="external-link" href="http://mina.apache.org/tutorial-on-protocolcodecfilter.html">Mina documentation</a> 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 codec.</p> - -<h3 id="BookInOnePage-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. See the <a shape="rect" class="external-link" href="http://mina.apache.org/report/1.1/apidocs/org/apache/mina/transport/vmpipe/package-summary.html">MINA VM-Pipe API documentation</a> for details.</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—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 to the URI in the following format, <code>?option=value&option=value&...</code></p><h3 id="BookInOnePage-Options.54">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>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 must use the <code>#</code> notation to look up your codec in the <a shape="rect" href="registry.html">Registry</a>. For example, use <code>#myCodec</code> to look up a bean with the <code>id</code> value, <code>myCodec</code>.</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><strong>Camel 2.3:</strong> 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>tex tline</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. Possible 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 pr oducer.</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.a pache.org/iofilter.html">Mina IoFilters</a> to register. The <code>filters</code> value must be one of the following:</p><ul><li><strong>Camel 2.2:</strong> comma-separated list of bean references (e.g. <code>#filterBean1,#filterBean2</code>) where each bean must be of type <code>org.apache.mina.common.IoFilter</code>.</li><li><strong>before Camel 2.2:</strong> a reference to a bean of type <code>List<org.apache.mina.common.IoFilter></code>.</li></ul></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>As of 2.1, you can 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>As of 2.1, you can 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>producerPoolSize</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>16</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The TCP producer is thread safe and supports concurrency much better. This option allows you to configure the number of threads in its thread pool for concurrent producers. <strong>Note:</strong> Camel has a pooled service which ensured it was already thread safe and supported concurrency already.</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><strong>Camel 2.3:</strong> 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 cols pan="1" rowspan="1" class="confluenceTd"><p><strong>Camel 2.3:</strong> If sync is enabled this option dictates MinaConsumer 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"><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="BookInOnePage-Usingacustomcodec">Using a custom codec</h3><p>See the <a shape="rect" class="external-link" href="http://mina.apache.org/tutorial-on-protocolcodecfilter.html">Mina documentation</a> 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 codec.</p><h3 id="BookInOnePage-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("mina:tcp://localhost:" + port1 + "?textline=true&sync=false").to("mock:result"); ]]></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"> +</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"> <script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[ MockEndpoint mock = getMockEndpoint("mock:result"); mock.expectedBodiesReceived("Hello World"); @@ -24997,13 +24949,7 @@ template.sendBody("mina:tcp://local assertMockEndpointsSatisfied(); ]]></script> -</div></div> - -<h3 id="BookInOnePage-Samplewithsync=true">Sample with sync=true</h3> - -<p>In the next sample, we have a more common use case where we expose a TCP service on port 6201 also use the textline codec. However, this time we want to return a response, so we set the <code>sync</code> option to <code>true</code> on the consumer.</p> - -<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> +</div></div><h3 id="BookInOnePage-Samplewithsync=true">Sample with sync=true</h3><p>In the next sample, we have a more common use case where we expose a TCP service on port 6201 also use the textline codec. However, this time we want to return a response, so we set the <code>sync</code> option to <code>true</code> on the consumer.</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("mina:tcp://localhost:" + port2 + "?textline=true&sync=true").process(new Processor() { public void process(Exchange exchange) throws Exception { @@ -25012,48 +24958,24 @@ from("mina:tcp://localhost:" + } }); ]]></script> -</div></div> - -<p>Then we test the sample by sending some data and retrieving the response using the <code>template.requestBody()</code> method. As we know the response is a <code>String</code>, we cast it to <code>String</code> and can assert that the response is, in fact, something we have dynamically set in our processor code logic.</p> - -<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> +</div></div><p>Then we test the sample by sending some data and retrieving the response using the <code>template.requestBody()</code> method. As we know the response is a <code>String</code>, we cast it to <code>String</code> and can assert that the response is, in fact, something we have dynamically set in our processor code logic.</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[ String response = (String)template.requestBody("mina:tcp://localhost:" + port2 + "?textline=true&sync=true", "World"); assertEquals("Bye World", response); ]]></script> -</div></div> - -<h3 id="BookInOnePage-SamplewithSpringDSL">Sample with Spring DSL</h3> - -<p>Spring DSL can, of course, also be used for <a shape="rect" href="mina.html">Mina</a>. In the sample below we expose a TCP server on port 5555:</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[ - <route> +</div></div><h3 id="BookInOnePage-SamplewithSpringDSL">Sample with Spring DSL</h3><p>Spring DSL can, of course, also be used for <a shape="rect" href="mina.html">MINA</a>. In the sample below we expose a TCP server on port 5555:</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[ <route> <from uri="mina:tcp://localhost:5555?textline=true"/> <to uri="bean:myTCPOrderHandler"/> </route> ]]></script> -</div></div> - -<p>In the route above, we expose a TCP server on port 5555 using the textline codec. We let the Spring bean with ID, <code>myTCPOrderHandler</code>, handle the request and return a reply. For instance, the handler bean could be implemented as follows:</p> -<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> -<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[ - public String handleOrder(String payload) { +</div></div><p>In the route above, we expose a TCP server on port 5555 using the textline codec. We let the Spring bean with ID, <code>myTCPOrderHandler</code>, handle the request and return a reply. For instance, the handler bean could be implemented as follows:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> +<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[ public String handleOrder(String payload) { ... return "Order: OK" } ]]></script> -</div></div> - -<h3 id="BookInOnePage-ConfiguringMinaendpointsusingSpringbeanstyle">Configuring Mina endpoints using Spring bean style</h3> - -<p>Configuration of Mina endpoints is possible using regular Spring bean style configuration in the Spring DSL.</p> - -<p>However, in the underlying Apache Mina toolkit, it is relatively difficult to set up the acceptor and the connector, because you can <em>not</em> use simple setters. To resolve this difficulty, we leverage the <code>MinaComponent</code> as a Spring factory bean to configure this for us. If you really need to configure this yourself, there are setters on the <code>MinaEndpoint</code> to set these when needed.</p> - -<p>The sample below shows the factory approach:</p> -<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> +</div></div><h3 id="BookInOnePage-ConfiguringMinaendpointsusingSpringbeanstyle">Configuring Mina endpoints using Spring bean style</h3><p>Configuration of Mina endpoints is possible using regular Spring bean style configuration in the Spring DSL.</p><p>However, in the underlying Apache Mina toolkit, it is relatively difficult to set up the acceptor and the connector, because you can <em>not</em> use simple setters. To resolve this difficulty, we leverage the <code>MinaComponent</code> as a Spring factory bean to configure this for us. If you really need to configure this yourself, there are setters on the <code>MinaEndpoint</code> to set these when needed.</p><p>The sample below shows the factory approach:</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[ <!-- Creating mina endpoints is a bit complex so we reuse MinaComponnet as a factory bean to create our endpoint, this is the easiest to do --> @@ -25080,10 +25002,7 @@ assertEquals("Bye World", resp <property name="sync" value="false"/> </bean> ]]></script> -</div></div> - -<p>And then we can refer to our endpoint directly in the route, as follows:</p> -<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> +</div></div><p>And then we can refer to our endpoint directly in the route, as follows:</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[ <route> <!-- here we route from or mina endpoint we have defined above --> @@ -25091,16 +25010,8 @@ assertEquals("Bye World", resp <to uri="mock:result"/> </route> ]]></script> -</div></div> - -<h3 id="BookInOnePage-ClosingSessionWhenComplete">Closing Session When Complete</h3> - -<p>When acting as a server you sometimes want to close the session when, for example, a client conversion is finished. To instruct Camel to close the session, you should add a header with the key <code>CamelMinaCloseSessionWhenComplete</code> set to a boolean <code>true</code> value.</p> - -<p>For instance, the example below will close the session after it has written the <code>bye</code> message back to the client:</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("mina:tcp://localhost:8080?sync=true&textline=true").process(new Processor() { +</div></div><h3 id="BookInOnePage-ClosingSessionWhenComplete">Closing Session When Complete</h3><p>When acting as a server you sometimes want to close the session when, for example, a client conversion is finished. To instruct Camel to close the session, you should add a header with the key <code>CamelMinaCloseSessionWhenComplete</code> set to a boolean <code>true</code> value.</p><p>For instance, the example below will close the session after it has written the <code>bye</code> message back to the client:</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("mina:tcp://localhost:8080?sync=true&textline=true").process(new Processor() { public void process(Exchange exchange) throws Exception { String body = exchange.getIn().getBody(String.class); exchange.getOut().setBody("Bye " + body); @@ -25108,30 +25019,14 @@ assertEquals("Bye World", resp } }); ]]></script> -</div></div> - -<h3 id="BookInOnePage-GettheIoSessionformessage">Get the IoSession for message</h3> - -<p><strong>Available since Camel 2.1</strong><br clear="none"> -You can get the IoSession from the message header with this key MinaEndpoint.HEADER_MINA_IOSESSION, and also get the local host address with the key MinaEndpoint.HEADER_LOCAL_ADDRESS and remote host address with the key MinaEndpoint.HEADER_REMOTE_ADDRESS.</p> - -<h3 id="BookInOnePage-ConfiguringMinafilters">Configuring Mina filters</h3> - -<p>Filters permit you to use some Mina Filters, such as <code>SslFilter</code>. You can also implement some customized filters. Please note that <code>codec</code> and <code>logger</code> are also implemented as Mina filters of type, <code>IoFilter</code>. Any filters you may define are appended to the end of the filter chain; that is, after <code>codec</code> and <code>logger</code>.</p> - - <div class="aui-message success shadowed information-macro"> +</div></div><h3 id="BookInOnePage-GettheIoSessionformessage">Get the IoSession for message</h3><p><strong>Available since Camel 2.1</strong><br clear="none"> You can get the IoSession from the message header with this key MinaEndpoint.HEADER_MINA_IOSESSION, and also get the local host address with the key MinaEndpoint.HEADER_LOCAL_ADDRESS and remote host address with the key MinaEndpoint.HEADER_REMOTE_ADDRESS.</p><h3 id="BookInOnePage-ConfiguringMinafilters">Configuring Mina filters</h3><p>Filters permit you to use some Mina Filters, such as <code>SslFilter</code>. You can also implement some customized filters. Please note that <code>codec</code> and <code>logger</code> are also implemented as Mina filters of type, <code>IoFilter</code>. Any filters you may define are appended to the end of the filter chain; that is, after <code>codec</code> and <code>logger</code>.</p> <div class="aui-message success shadowed information-macro"> <span class="aui-icon icon-success">Icon</span> <div class="message-content"> - -<p>If using the <code>SslFilter</code> you need to add the <code>mina-filter-ssl</code> JAR to the classpath.</p> + <p>If using the <code>SslFilter</code> you need to add the <code>mina-filter-ssl</code> JAR to the classpath.</p> </div> </div> - - -<p>For instance, the example below will send a keep-alive message after 10 seconds of inactivity:</p> -<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> -<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[ -public class KeepAliveFilter extends IoFilterAdapter { +<p>For instance, the example below will send a keep-alive message after 10 seconds of inactivity:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> +<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[public class KeepAliveFilter extends IoFilterAdapter { @Override public void sessionCreated(NextFilter nextFilter, IoSession session) throws Exception { @@ -25148,13 +25043,8 @@ public class KeepAliveFilter extends IoF } } ]]></script> -</div></div> - -<p>As Camel Mina may use a request-reply scheme, the endpoint as a client would like to drop some message, such as greeting when the connection is established. For example, when you connect to an FTP server, you will get a <code>220</code> message with a greeting (<code>220 Welcome to Pure-FTPd</code>). If you don't drop the message, your request-reply scheme will be broken.</p> - -<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> -<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[ -public class DropGreetingFilter extends IoFilterAdapter { +</div></div><p>As Camel Mina may use a request-reply scheme, the endpoint as a client would like to drop some message, such as greeting when the connection is established. For example, when you connect to an FTP server, you will get a <code>220</code> message with a greeting (<code>220 Welcome to Pure-FTPd</code>). If you don't drop the message, your request-reply scheme will be broken.</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> +<script class="theme: Default; brush: java; gutter: false" type="syntaxhighlighter"><![CDATA[public class DropGreetingFilter extends IoFilterAdapter { @Override public void messageReceived(NextFilter nextFilter, IoSession session, @@ -25171,12 +25061,8 @@ public class DropGreetingFilter extends } } ]]></script> -</div></div> - -<p>Then, you can configure your endpoint using Spring DSL:</p> -<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> -<script class="theme: Default; brush: xml; gutter: false" type="syntaxhighlighter"><![CDATA[ -<bean id="myMinaFactory" class="org.apache.camel.component.mina.MinaComponent"> +</div></div><p>Then, you can configure your endpoint using Spring DSL:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> +<script class="theme: Default; brush: xml; gutter: false" type="syntaxhighlighter"><![CDATA[<bean id="myMinaFactory" class="org.apache.camel.component.mina.MinaComponent"> <constructor-arg index="0" ref="camelContext" /> </bean> @@ -25204,11 +25090,8 @@ public class DropGreetingFilter extends </constructor-arg> </bean> ]]></script> -</div></div> - -<h3 id="BookInOnePage-SeeAlso.60">See Also</h3> -<ul><li><a shape="rect" href="configuring-camel.html">Configuring Camel</a></li><li><a shape="rect" href="component.html">Component</a></li><li><a shape="rect" href="endpoint.html">Endpoint</a></li><li><a shape="rect" href="getting-started.html">Getting Started</a></li></ul> -<ul class="alternate"><li><a shape="rect" href="mina2.html">Mina2</a></li><li><a shape="rect" href="netty.html">Netty</a></li></ul> <h2 id="BookInOnePage-MockComponent.1">Mock Component</h2> +</div></div><p></p><h3 id="BookInOnePage-SeeAlso.60">See Also</h3> +<ul><li><a shape="rect" href="configuring-camel.html">Configuring Camel</a></li><li><a shape="rect" href="component.html">Component</a></li><li><a shape="rect" href="endpoint.html">Endpoint</a></li><li><a shape="rect" href="getting-started.html">Getting Started</a></li></ul><ul class="alternate"><li><a shape="rect" href="mina2.html">MINA2</a></li><li><a shape="rect" href="netty.html">Netty</a></li></ul> <h2 id="BookInOnePage-MockComponent.1">Mock Component</h2> <a shape="rect" href="testing.html">Testing</a> of distributed and asynchronous processing is notoriously difficult. The <a shape="rect" href="mock.html">Mock</a>, <a shape="rect" href="test.html">Test</a> and <a shape="rect" href="dataset.html">DataSet</a> endpoints work great with the <a shape="rect" href="testing.html">Camel Testing Framework</a> to simplify your unit and integration testing using <a shape="rect" href="enterprise-integration-patterns.html">Enterprise Integration Patterns</a> and Camel's large range of <a shape="rect" href="components.html">Components</a> together with the powerful <a shape="rect" href="bean-integration.html">Bean Integration</a>. @@ -26050,7 +25933,7 @@ Camel also provides a <a shape="rect" hr <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&option=value&...</code></p><h3 id="BookInOnePage-Options.59">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="conflu enceTd"><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> </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 o ver 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" rowspa n="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 e nabled 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><td 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" 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 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><s trong>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</co de></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 default 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="#BookInOnePage-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 sh ape="rect" class="external-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 authenticat ion 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="con fluenceTd"><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 exampl e 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, s uch 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.  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="BookInOnePage-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.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="rec t" 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 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="Boo kInOnePage-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 class, that has a number of commonly used methods.</p><h3 id="BookInOnePage-SendingMessagesto/fromaNettyendpoint">Sending Messages to/from a Netty endpoint</h3><h4 id="BookInOnePage-NettyProducer">Netty Producer</h4><p>In Producer mode, the component provides the ability to send payloads to a socket endpoint<br clear="none"> u sing 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="BookInOnePage-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> </p><h3 id="BookInOnePage-Headers.4">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="conf luenceTh">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>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="BookInOnePage-UsageSamples">Usage Samples</h3><h4 id="BookInOnePage-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">
[... 5 lines stripped ...] Modified: websites/production/camel/content/cache/main.pageCache ============================================================================== Binary files - no diff available.