Added: synapse/site/3_0_2/userguide/transports.html URL: http://svn.apache.org/viewvc/synapse/site/3_0_2/userguide/transports.html?rev=1909775&view=auto ============================================================================== --- synapse/site/3_0_2/userguide/transports.html (added) +++ synapse/site/3_0_2/userguide/transports.html Fri May 12 16:09:34 2023 @@ -0,0 +1,1957 @@ +<!DOCTYPE html> +<!-- + | Generated by Apache Maven Doxia Site Renderer 1.7.4 at 2023-05-04 + | Rendered using Apache Maven Fluido Skin 1.6 +--> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> + <head> + <meta charset="UTF-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <meta name="Date-Revision-yyyymmdd" content="20230504" /> + <meta http-equiv="Content-Language" content="en" /> + <title>Apache Synapse – Apache Synapse - Transports Catalog</title> + <link rel="stylesheet" href="../css/apache-maven-fluido-1.6.min.css" /> + <link rel="stylesheet" href="../css/site.css" /> + <link rel="stylesheet" href="../css/print.css" media="print" /> + <script type="text/javascript" src="../js/apache-maven-fluido-1.6.min.js"></script> + </head> + <body class="topBarDisabled"> + <div class="container-fluid"> + <div id="banner"> + <div class="pull-left"><div id="bannerLeft"><h2>Apache Synapse</h2> +</div> +</div> + <div class="pull-right"></div> + <div class="clear"><hr/></div> + </div> + + <div id="breadcrumbs"> + <ul class="breadcrumb"> + <li id="publishDate">Last Published: 2023-05-04<span class="divider">|</span> +</li> + <li id="projectVersion">Version: 3.0.2</li> + </ul> + </div> + <div class="row-fluid"> + <div id="leftColumn" class="span2"> + <div class="well sidebar-nav"> +<ul class="nav nav-list"> + <li class="nav-header">Main Menu</li> + <li><a href="../index.html" title="Home"><span class="none"></span>Home</a> </li> + <li><a href="../download.html" title="Download"><span class="none"></span>Download</a> </li> + <li><a href="../history.html" title="History"><span class="none"></span>History</a> </li> + <li><a href="http://www.apache.org/licenses/LICENSE-2.0" class="externalLink" title="License"><span class="none"></span>License</a> </li> + <li><a href="http://www.apache.org/foundation/thanks.html" class="externalLink" title="Thanks"><span class="none"></span>Thanks</a> </li> + <li><a href="http://www.apache.org/foundation/sponsorship.html" class="externalLink" title="Sponsorship"><span class="none"></span>Sponsorship</a> </li> + <li><a href="http://www.apache.org/security/" class="externalLink" title="Security"><span class="none"></span>Security</a> </li> + <li class="nav-header">Documentation</li> + <li><a href="../userguide/installation.html" title="Installation Guide"><span class="none"></span>Installation Guide</a> </li> + <li><a href="../userguide/quick_start.html" title="Quick Start Guide"><span class="none"></span>Quick Start Guide</a> </li> + <li><a href="../userguide/samples/setup/index.html" title="Samples Setup Guide"><span class="none"></span>Samples Setup Guide</a> </li> + <li><a href="../userguide/samples.html" title="Samples Catalog"><span class="none"></span>Samples Catalog</a> </li> + <li><a href="../userguide/config.html" title="Configuration Language"><span class="none"></span>Configuration Language</a> </li> + <li><a href="../userguide/mediators.html" title="Mediators Catalog"><span class="none"></span>Mediators Catalog</a> </li> + <li class="active"><a href="#"><span class="none"></span>Transports Catalog</a> + </li> + <li><a href="../userguide/properties.html" title="Properties Catalog"><span class="none"></span>Properties Catalog</a> </li> + <li><a href="../userguide/xpath.html" title="XPath functions and Variables"><span class="none"></span>XPath functions and Variables</a> </li> + <li><a href="../userguide/extending.html" title="Extending Synapse"><span class="none"></span>Extending Synapse</a> </li> + <li><a href="../userguide/template_library.html" title="Synapse Template Libraries"><span class="none"></span>Synapse Template Libraries</a> </li> + <li><a href="../userguide/upgrading.html" title="Upgrading"><span class="none"></span>Upgrading</a> </li> + <li><a href="../userguide/deployment.html" title="Deployment"><span class="none"></span>Deployment</a> </li> + <li><a href="../apidocs/" title="Javadocs"><span class="none"></span>Javadocs</a> </li> + <li><a href="../userguide/faq.html" title="FAQ"><span class="none"></span>FAQ</a> </li> + <li class="nav-header">Developer Resources</li> + <li><a href="../dev/developer-guide.html" title="Developer Guide"><span class="none"></span>Developer Guide</a> </li> + <li><a href="../dev/best-practices.html" title="Development Best Practices"><span class="none"></span>Development Best Practices</a> </li> + <li><a href="../dev/release-process.html" title="Release Process"><span class="none"></span>Release Process</a> </li> + <li class="nav-header">Project Details</li> + <li><a href="../project-info.html" title="Overview"><span class="none"></span>Overview</a> </li> + <li><a href="../mail-lists.html" title="Mailing Lists"><span class="none"></span>Mailing Lists</a> </li> + <li><a href="../source-repository.html" title="Source Repository"><span class="none"></span>Source Repository</a> </li> + <li><a href="../issue-tracking.html" title="Issue Tracking"><span class="none"></span>Issue Tracking</a> </li> + <li><a href="../dependency-management.html" title="Dependencies"><span class="none"></span>Dependencies</a> </li> + <li><a href="../team-list.html" title="Project Team"><span class="none"></span>Project Team</a> </li> + </ul> + <hr /> + <div id="poweredBy"> + <div class="clear"></div> + <div class="clear"></div> + <div class="clear"></div> + <div class="clear"></div> + <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="../images/logos/maven-feather.png" /></a> + </div> + </div> + </div> + <div id="bodyColumn" class="span10" > + + + <a name="Introduction"></a> +<div class="section" id="Introduction"> +<h2><a name="Transports_Catalog"></a>Transports Catalog</h2> + +<p> + The Synapse project has developed a set of transport implementations that provide + protocol support and/or features that go beyond what is provided out of the box by + Axis2: + </p> + +<ul> + +<li> + A non-blocking HTTP transport that gives better performance in a highly + asynchronous environment like Synapse. + </li> + +<li> + A VFS transport that can read messages from files and write outgoing messages to + a file system. The file system can be local or remote, and several remote + protocols are supported, such as FTP, SSH, WebDAV, etc. + </li> + +<li> + A transport supporting the + <a class="externalLink" href="http://www.fixprotocol.org">Financial Information eXchange</a> + protocol. FIX is a public-domain messaging standard developed specifically for + the real-time electronic exchange of securities transactions. It has a large user + base and is developed by the collaborative effort of banks, broker-dealers, + exchanges, industry utilities and associations, institutional investors, and IT + providers around the world. + </li> + +<li> + A AMQP transport which support the AMQP protocol. + <a class="externalLink" href="http://www.amqp.org/">AMQP</a> is a messaging + protocol. + </li> + </ul> + +<p>Note that while these transports are developed as part of the Synapse project, + they can be used with any Axis2 based application. + </p> + +<p> + The Synapse distribution also comes bundled with the following transports from + the <a class="externalLink" href="http://axis.apache.org/axis2/java/transports/index.html">Axis2 Transport</a> + project: + </p> + +<ul> + +<li> + A + <a class="externalLink" href="http://axis.apache.org/axis2/java/transports/jms.html">JMS transport</a> + supporting any JMS 1.0 or 1.1 provider. + </li> + +<li> + A + <a class="externalLink" href="http://axis.apache.org/axis2/java/transports/mail.html">Mail transport</a> + able to send messages using SMTP and poll messages from a POP3 or IMAP account. + +<p> + Apache Synapse is also compatible with the following transport implementations + from the Apache Axis2 Transports project: + </p> + </li> + +<li> + <a class="externalLink" href="http://axis.apache.org/axis2/java/transports/tcp-transport.html">TCP transport</a> + </li> + +<li> + <a class="externalLink" href="http://axis.apache.org/axis2/java/transports/sms.html">SMS transport</a> + </li> + +<li>UDP transport</li> + +<li> + XMPP transport + +<p> + These transports are not shipped with Apache Synapse by default and hence they + should be + <a class="externalLink" href="http://axis.apache.org/axis2/java/transports/download.cgi">downloaded separately</a> + from the Axis2 transport website and installed in the Synapse runtime. + </p> + </li> + </ul> + </div> + <a name="Content"></a> +<div class="section" id="Content"> +<h2><a name="Content"></a>Content</h2> + +<ul> + +<li> + <a href="#Introduction">Introduction</a> + </li> + +<li> + <a href="#Contents">Contents</a> + </li> + +<li> + <a href="#Passthrough_HTTP_transport">Passthrough HTTP transport</a> + +<ul> + +<li> + <a href="#Example_configurations">Example configurations</a> + </li> + +<li> + <a href="#Transport_listener_parameters">Transport listener parameters</a> + </li> + +<li> + <a href="#Transport_sender_parameters">Transport sender parameters</a> + </li> + </ul> + </li> + +<li> + <a href="#Non-blocking_HTTPNHTTP_transport">Non-blocking HTTP(NHTTP) transport</a> + +<ul> + +<li> + <a href="#Example_configurations">Example configurations</a> + </li> + +<li> + <a href="#Transport_listener_parameters">Transport listener parameters</a> + </li> + +<li> + <a href="#Transport_sender_parameters">Transport sender parameters</a> + </li> + </ul> + </li> + +<li> + <a href="#VFS_transport">VFS transport</a> + +<ul> + +<li> + <a href="#Transport_listener">Transport listener</a> + </li> + +<li> + <a href="#Transport_sender">Transport sender</a> + </li> + +<li> + <a href="#Using_SFTP">Using SFTP</a> + </li> + +<li> + <a href="#Known_issues">Known issues</a> + </li> + </ul> + </li> + +<li> + <a href="#FIX_transport">FIX transport</a> + +<ul> + +<li> + <a href="#Setting_up_the_FIX_Transport">Setting up the FIX Transport</a> + </li> + +<li> + <a href="#FIX_Transport_Parameters">FIX Transport Parameters</a> + </li> + </ul> + </li> + +<li> + <a href="#amqp_transport">AMQP transport</a> + +<ul> + +<li> + <a href="#setting_up_the_amqp_transport">Setting up the AMQP Transport</a> + </li> + +<li> + <a href="#amqp_transport_parameters">AMQP Transport Parameters</a> + </li> + +<li> + <a href="#amqp_transport_ex">Sample Configurations</a> + </li> + </ul> + </li> + </ul> + </div> + <a name="Passthrough_HTTP_transport"></a> +<div class="section" id="Passthrough_HTTP_transport"> +<h2><a name="Passthrough_HTTP_transport"></a>Passthrough HTTP transport</h2> + <a name="Example_configurations"></a> +<div class="section" id="Example_configurations"> +<h3><a name="Example_configuration"></a>Example configuration</h3> + +<div class="xmlConf"><transportReceiver name="http" class="org.apache.synapse.transport.passthru.PassThroughHttpListener"> + <parameter name="port">8280</parameter> + <parameter name="httpGetProcessor"locked="org.apache.synapse.transport.passthru.api.PassThroughNHttpGetProcessor">true</parameter> +</transportReceiver> + +<transportReceiver name="https" class="org.apache.synapse.transport.passthru.PassThroughHttpSSLListener"> + <parameter name="port" locked="false">8243</parameter> + <parameter name="httpGetProcessor"locked="org.apache.synapse.transport.passthru.api.PassThroughNHttpGetProcessor">true</parameter> + <parameter name="keystore" locked="false"> + <KeyStore> + <Location>lib/identity.jks</Location> + <Type>JKS</Type> + <Password>password</Password> + <KeyPassword>password</KeyPassword> + </KeyStore> + </parameter> + <parameter name="truststore" locked="false"> + <TrustStore> + <Location>lib/trust.jks</Location> + <Type>JKS</Type> + <Password>password</Password> + </TrustStore> + </parameter> +</transportReceiver> + +<transportSender name="http" class="org.apache.synapse.transport.passthru.PassThroughHttpSender"> +</transportSender> + +<transportSender name="https" class="org.apache.synapse.transport.passthru.PassThroughHttpSSLSender"> + <parameter name="keystore" locked="false"> + <KeyStore> + <Location>lib/identity.jks</Location> + <Type>JKS</Type> + <Password>password</Password> + <KeyPassword>password</KeyPassword> + </KeyStore> + </parameter> + <parameter name="truststore" locked="false"> + <TrustStore> + <Location>lib/trust.jks</Location> + <Type>JKS</Type> + <Password>password</Password> + </TrustStore> + </parameter> + <parameter name="CertificateRevocationVerifier"> + <CacheSize>50</CacheSize> + <CacheDurationMins>5</CacheDurationMins> + </parameter> +</transportSender></div> + </div> + <a name="Transport_listener_parameters"></a> +<div class="section" id="Transport_listener_parameters"> +<h3><a name="Transport_listener_parameters"></a>Transport listener parameters</h3> + +<p>The following parameters are supported by both the HTTP and the HTTPS listener:</p> + +<dl> + +<dt> + <tt>port</tt> + </dt> + +<dd>The TCP port to bind the listener to.</dd> + +<dt> + <tt>bind-address</tt> + </dt> + +<dd> + The IP address to bind the listener to. This can be used on hosts that have + more than one network interface or IP address to run multiple Synapse instances + listening to the same port. If this parameter is not specified, the + listener will accept connections on any IP address. + </dd> + +<dt> + <tt>hostname</tt> + </dt> + +<dd> + The host name to use when computing endpoint references in generated WSDL files. + The default value is the host name as provided by the operation system or + <tt>localhost</tt> if the host name can't be determined. The value of this + parameter is ignored if <tt>WSDLEPRPrefix</tt> is specified. + </dd> + +<dt> + <tt>WSDLEPRPrefix</tt> + </dt> + +<dd> + The URL prefix to use when computing endpoint references in generated WSDL files. + The value must be a valid URL with at least a protocol and host. If this value + is unspecified, endpoint references will be computed based on the listener type + (HTTP or HTTPS) and <tt>hostname</tt> and <tt>port</tt> parameters. + +<p> + This parameter should be used if clients connect to Synapse through a frontend + server, e.g. a (load balancing) Apache, and these clients rely on the address + information in the WSDL documents exposed through <tt>...?wsdl</tt> URLs. + </p> + </dd> + </dl> + +<p>The following parameters are specific to the HTTPS listener: </p> + +<dl> + +<dt> + <tt>keystore</tt> + </dt> + +<dd> + The keystore configuration. The value of this parameter must be a + <tt><KeyStore></tt> + element as shown in the example configurations above. + </dd> + +<dt> + <tt>truststore</tt> + </dt> + +<dd> + The truststore configuration. The value of this parameter must be a + <tt><TrustStore></tt> + element as shown in the example configurations above. + </dd> + +<dt> + <tt>SSLVerifyClient</tt> + </dt> + +<dd> + This parameter has the same meaning as the corresponding + <a class="externalLink" href="http://httpd.apache.org/docs/2.2/mod/mod_ssl.html#sslverifyclient">mod_ssl directive</a> + and sets the desired certificate verification level for client authentication: + +<ul> + +<li> + <tt>none</tt> (default): no client certificate is required at all + </li> + +<li> + <tt>optional</tt>: the client may present a valid certificate, but is + not required to do so + </li> + +<li> + <tt>require</tt>: the client has to present a valid certificate, + otherwise the connection request will be terminated during SSL handshake + </li> + </ul> + </dd> + </dl> + </div> + <a name="Transport_sender_parameters"></a> +<div class="section" id="Transport_sender_parameters"> +<h3><a name="Transport_sender_parameters"></a>Transport sender parameters</h3> + +<p> + The following property can be used to control based on content-types whether the + HTTP/HTTPS sender shall output a warning for responses with HTTP status code 500. + </p> + +<dl> + +<dt> + <tt>warnOnHTTP500</tt> + </dt> + +<dd> + A list of content-types for which Synapse shall output a warning when receiving + an HTTP 500 response (each value each separated by a |). By default, Synapse + outputs a warning for any HTTP 500 response, irrespective of the content-type. + Consequently, also for each SOAP fault a warning will be logged. If only for + specific content-types a warning shall be logged, please provide a |-separated + list. To output the warning for messages which do not have a content-type set, + please use the value 'none'. + +<p> + Example value: x-application/hessian|none + </p> + </dd> + </dl> + +<p> + The following properties can be used to configure the HTTP sender to use a proxy. + They can be specified either as transport parameters in declared in + <tt><transportSender></tt> or as system properties. + </p> + +<dl> + +<dt> + <tt>http.proxyHost</tt> + </dt> + +<dd>The host name or address of the proxy server.</dd> + +<dt> + <tt>http.proxyPort</tt> + </dt> + +<dd>The TCP port of the proxy server.</dd> + +<dt> + <tt>http.nonProxyHosts</tt> + </dt> + +<dd> + The hosts to which the HTTP sender should connect directly and not through + the proxy server. The value can be a list of hosts, each separated by a |, and + in addition a wildcard character (*) can be used for matching. + +<p> + Example value: + <tt>*.foo.com|localhost</tt> + </p> + </dd> + </dl> + +<p>Note that the HTTPS sender has no proxy support yet.</p> + +<p>The following parameters are specific to the HTTPS sender:</p> + +<dl> + +<dt> + <tt>keystore</tt> + </dt> + +<dd> + The keystore configuration. The value of this parameter must be a + <tt><KeyStore></tt> element as shown in the example configurations + above. + </dd> + +<dt> + <tt>truststore</tt> + </dt> + +<dd> + The truststore configuration. The value of this parameter must be a + <tt><TrustStore></tt> + element as shown in the example configurations above. + </dd> + +<dt> + <tt>novalidatecert</tt> + </dt> + +<dd> + When set to <tt>true</tt>, this parameter disables server certificate + validation (trust). The default value is <tt>false</tt>. This parameter will + be ignored if <tt>truststore</tt> is set. + +<p> + Setting his parameter to <tt>true</tt> + is useful in development and test environments, but should not be used in + production environments. If validation is disabled, a warning message will + be logged at startup. + </p> + </dd> + +<dt> + <tt>HostnameVerifier</tt> + </dt> + +<dd> + This optional parameter specifies the policy to apply when checking that the + hostname of the server matches the names stored inside the X.509 certificate + presented by the server. Possible values are <tt>Strict</tt>, <tt>AllowAll</tt> + and <tt>DefaultAndLocalhost</tt>. See the + <a href="../apidocs/org/apache/synapse/transport/nhttp/HostnameVerifier.html">HostnameVerifier Javadoc</a> + for more details. + </dd> + +<dt> + <tt>CertificateRevocationVerifier</tt> + </dt> + +<dd> + This is an optional parameter to validate the revocation status of the host + certificates using <a class="externalLink" href="http://www.ietf.org/rfc/rfc2560.txt">OCSP</a> and + <a class="externalLink" href="http://www.ietf.org/rfc/rfc5280.txt">CRL</a> when making HTTPS connections. + Simply uncomment this parameter in the axis2.xml file to enable the feature. + Two LRU caches are used to cache CRLs and OCSP responses until they are expired. "CacheSize" + property defines the maximum size of a cache. When this limit is reached, the + old values will be automatically removed and updated with new values. "CacheDurationMins" + is used to configure the time duration (in minutes) between two consecutive + runs of the CacheManager task which periodically performs housekeeping work + in each cache. Refer the example configuration above to see how to configure + these properties. The scheduled CacheManager tasks for OCSP and CRL caches can + be manually controlled using the JMX MBeans registered under the "CacheController" + category. + </dd> + </dl> + </div> + </div> + <a name="Non-blocking_HTTPNHTTP_transport"></a> +<div class="section" id="Non-blocking_HTTP(NHTTP)_transport"> +<h2><a name="Non-blocking_HTTP_NHTTP_transport"></a>Non-blocking HTTP (NHTTP) transport</h2> + <a name="Example_configurations"></a> +<div class="section" id="Example_configurations"> +<h3><a name="Example_configuration"></a>Example configuration</h3> + +<div class="xmlConf"><transportReceiver name="http" class="org.apache.synapse.transport.nhttp.HttpCoreNIOListener"> + <parameter name="port">8280</parameter> + <parameter name="non-blocking">true</parameter> +</transportReceiver> + +<transportReceiver name="https" class="org.apache.synapse.transport.nhttp.HttpCoreNIOSSLListener"> + <parameter name="port" locked="false">8243</parameter> + <parameter name="non-blocking" locked="false">true</parameter> + <parameter name="keystore" locked="false"> + <KeyStore> + <Location>lib/identity.jks</Location> + <Type>JKS</Type> + <Password>password</Password> + <KeyPassword>password</KeyPassword> + </KeyStore> + </parameter> + <parameter name="truststore" locked="false"> + <TrustStore> + <Location>lib/trust.jks</Location> + <Type>JKS</Type> + <Password>password</Password> + </TrustStore> + </parameter> +</transportReceiver> + +<transportSender name="http" class="org.apache.synapse.transport.nhttp.HttpCoreNIOSender"> + <parameter name="non-blocking" locked="false">true</parameter> + <parameter name="warnOnHTTP500" locked="false">*</parameter> +</transportSender> + +<transportSender name="https" class="org.apache.synapse.transport.nhttp.HttpCoreNIOSSLSender"> + <parameter name="non-blocking" locked="false">true</parameter> + <parameter name="warnOnHTTP500" locked="false">*</parameter> + <parameter name="keystore" locked="false"> + <KeyStore> + <Location>lib/identity.jks</Location> + <Type>JKS</Type> + <Password>password</Password> + <KeyPassword>password</KeyPassword> + </KeyStore> + </parameter> + <parameter name="truststore" locked="false"> + <TrustStore> + <Location>lib/trust.jks</Location> + <Type>JKS</Type> + <Password>password</Password> + </TrustStore> + </parameter> + <parameter name="CertificateRevocationVerifier"> + <CacheSize>50</CacheSize> + <CacheDurationMins>5</CacheDurationMins> + </parameter> +</transportSender></div> + </div> + <a name="Transport_listener_parameters"></a> +<div class="section" id="Transport_listener_parameters"> +<h3><a name="Transport_listener_parameters"></a>Transport listener parameters</h3> + +<p>The following parameters are supported by both the HTTP and the HTTPS listener:</p> + +<dl> + +<dt> + <tt>port</tt> + </dt> + +<dd>The TCP port to bind the listener to.</dd> + +<dt> + <tt>bind-address</tt> + </dt> + +<dd> + The IP address to bind the listener to. This can be used on hosts that have + more than one network interface or IP address to run multiple Synapse instances + listening to the same port. If this parameter is not specified, the + listener will accept connections on any IP address. + </dd> + +<dt> + <tt>hostname</tt> + </dt> + +<dd> + The host name to use when computing endpoint references in generated WSDL files. + The default value is the host name as provided by the operation system or + <tt>localhost</tt> if the host name can't be determined. The value of this + parameter is ignored if <tt>WSDLEPRPrefix</tt> is specified. + </dd> + +<dt> + <tt>WSDLEPRPrefix</tt> + </dt> + +<dd> + The URL prefix to use when computing endpoint references in generated WSDL files. + The value must be a valid URL with at least a protocol and host. If this value + is unspecified, endpoint references will be computed based on the listener type + (HTTP or HTTPS) and <tt>hostname</tt> and <tt>port</tt> parameters. + +<p> + This parameter should be used if clients connect to Synapse through a frontend + server, e.g. a (load balancing) Apache, and these clients rely on the address + information in the WSDL documents exposed through <tt>...?wsdl</tt> URLs. + </p> + </dd> + </dl> + +<p>The following parameters are specific to the HTTPS listener: </p> + +<dl> + +<dt> + <tt>keystore</tt> + </dt> + +<dd> + The keystore configuration. The value of this parameter must be a + <tt><KeyStore></tt> + element as shown in the example configurations above. + </dd> + +<dt> + <tt>truststore</tt> + </dt> + +<dd> + The truststore configuration. The value of this parameter must be a + <tt><TrustStore></tt> + element as shown in the example configurations above. + </dd> + +<dt> + <tt>SSLVerifyClient</tt> + </dt> + +<dd> + This parameter has the same meaning as the corresponding + <a class="externalLink" href="http://httpd.apache.org/docs/2.2/mod/mod_ssl.html#sslverifyclient">mod_ssl directive</a> + and sets the desired certificate verification level for client authentication: + +<ul> + +<li> + <tt>none</tt> (default): no client certificate is required at all + </li> + +<li> + <tt>optional</tt>: the client may present a valid certificate, but is + not required to do so + </li> + +<li> + <tt>require</tt>: the client has to present a valid certificate, + otherwise the connection request will be terminated during SSL handshake + </li> + </ul> + </dd> + </dl> + </div> + <a name="Transport_sender_parameters"></a> +<div class="section" id="Transport_sender_parameters"> +<h3><a name="Transport_sender_parameters"></a>Transport sender parameters</h3> + +<p> + The following property can be used to control based on content-types whether the + HTTP/HTTPS sender shall output a warning for responses with HTTP status code 500. + </p> + +<dl> + +<dt> + <tt>warnOnHTTP500</tt> + </dt> + +<dd> + A list of content-types for which Synapse shall output a warning when receiving + an HTTP 500 response (each value each separated by a |). By default, Synapse + outputs a warning for any HTTP 500 response, irrespective of the content-type. + Consequently, also for each SOAP fault a warning will be logged. If only for + specific content-types a warning shall be logged, please provide a |-separated + list. To output the warning for messages which do not have a content-type set, + please use the value 'none'. + +<p> + Example value: x-application/hessian|none + </p> + </dd> + </dl> + +<p> + The following properties can be used to configure the HTTP sender to use a proxy. + They can be specified either as transport parameters in declared in + <tt><transportSender></tt> or as system properties. + </p> + +<dl> + +<dt> + <tt>http.proxyHost</tt> + </dt> + +<dd>The host name or address of the proxy server.</dd> + +<dt> + <tt>http.proxyPort</tt> + </dt> + +<dd>The TCP port of the proxy server.</dd> + +<dt> + <tt>http.nonProxyHosts</tt> + </dt> + +<dd> + The hosts to which the HTTP sender should connect directly and not through + the proxy server. The value can be a list of hosts, each separated by a |, and + in addition a wildcard character (*) can be used for matching. + +<p> + Example value: + <tt>*.foo.com|localhost</tt> + </p> + </dd> + </dl> + +<p>Note that the HTTPS sender has no proxy support yet.</p> + +<p>The following parameters are specific to the HTTPS sender:</p> + +<dl> + +<dt> + <tt>keystore</tt> + </dt> + +<dd> + The keystore configuration. The value of this parameter must be a + <tt><KeyStore></tt> element as shown in the example configurations + above. + </dd> + +<dt> + <tt>truststore</tt> + </dt> + +<dd> + The truststore configuration. The value of this parameter must be a + <tt><TrustStore></tt> + element as shown in the example configurations above. + </dd> + +<dt> + <tt>novalidatecert</tt> + </dt> + +<dd> + When set to <tt>true</tt>, this parameter disables server certificate + validation (trust). The default value is <tt>false</tt>. This parameter will + be ignored if <tt>truststore</tt> is set. + +<p> + Setting his parameter to <tt>true</tt> + is useful in development and test environments, but should not be used in + production environments. If validation is disabled, a warning message will + be logged at startup. + </p> + </dd> + +<dt> + <tt>HostnameVerifier</tt> + </dt> + +<dd> + This optional parameter specifies the policy to apply when checking that the + hostname of the server matches the names stored inside the X.509 certificate + presented by the server. Possible values are <tt>Strict</tt>, <tt>AllowAll</tt> + and <tt>DefaultAndLocalhost</tt>. See the + <a href="../apidocs/org/apache/synapse/transport/nhttp/HostnameVerifier.html">HostnameVerifier Javadoc</a> + for more details. + </dd> + +<dt> + <tt>CertificateRevocationVerifier</tt> + </dt> + +<dd> + This is an optional parameter to validate the revocation status of the host + certificates using <a class="externalLink" href="http://www.ietf.org/rfc/rfc2560.txt">OCSP</a> and + <a class="externalLink" href="http://www.ietf.org/rfc/rfc5280.txt">CRL</a> when making HTTPS connections. + Simply uncomment this parameter in the axis2.xml file to enable the feature. + Two LRU caches are used to cache CRLs and OCSP responses until they are expired. "CacheSize" + property defines the maximum size of a cache. When this limit is reached, the + old values will be automatically removed and updated with new values. "CacheDurationMins" + is used to configure the time duration (in minutes) between two consecutive + runs of the CacheManager task which periodically performs housekeeping work + in each cache. Refer the example configuration above to see how to configure + these properties. The scheduled CacheManager tasks for OCSP and CRL caches can + be manually controlled using the JMX MBeans registered under the "CacheController" + category. + </dd> + </dl> + </div> + </div> + <a name="VFS_transport"></a> +<div class="section" id="VFS_transport"> +<h2><a name="VFS_transport"></a>VFS transport</h2> + <a name="Transport_listener"></a> +<div class="section" id="Transport_listener"> +<h3><a name="Transport_listener"></a>Transport listener</h3> + + +<p> + The VFS transport listener receives messages dropped in a given local or remote file + system location. The location is specified by a URL that either identifies a single + file or a directory. The transport listener will periodically poll the specified + location and process any file(s) found. After a file has been processed it will be + deleted or moved to another location. Note that this is absolutely mandatory to + prevent the listener from processing files multiple times. Therefore, the VFS transport + listener can only be used in situations where it has write access to the file system + location and where deleting or moving the dropped files is acceptable. + </p> + +<p> + The transport is based on + <a class="externalLink" href="http://commons.apache.org/vfs/">Apache Commons VFS</a> + and supports any protocol for which a VFS provider is available. The transport is + pre-configured with providers for local files ( + <tt>file:</tt> + scheme), HTTP, HTTPS, FTP and SFTP (i.e. file transfer over SSH). + </p> + +<p> + There is a fundamental difference between the VFS transport and transports such as + HTTP and it is important to understand this difference to be able to use the VFS + transport correctly. The HTTP transport binds to a single protocol endpoint, i.e. + a TCP port on which it accepts incoming HTTP requests. These requests are then + dispatched to the right service based on the request URI. On the other hand, the + VFS transport only receives the payload of a message, but no additional information + that could be used to dispatch the message to a service. This means that file system + locations must be explicitly mapped to services. This is done using a set of service + parameters. + </p> + +<p>For Synapse this means that the VFS transport listener can only be used in + conjunction with proxy services. The relevant service parameters are then specified + as follows: + </p> + +<div class="xmlConf"><proxy name="MyVFSService" transports="vfs"> + <parameter name="transport.vfs.FileURI">file:///var/spool/synapse/in</parameter> + <parameter name="transport.vfs.ContentType">application/xml</parameter> + ... + <target> + ... + </target> +</proxy></div> + +<p> + In this example the file system location + <tt>file:///var/spool/synapse/in</tt> + is explicitly bound to + <tt>MyVFSService</tt> + , i.e. any message dropped in that location will be predispatched to that service, bypassing any other configured + dispatch mechanisms that would apply to messages received through HTTP. + </p> + +<p>The VFS transport recognizes the following service parameters:</p> + +<dl> + +<dt> + <tt>transport.vfs.FileURI</tt>(Required) + </dt> + +<dd> + The primary File (or Directory) URI in the vfs* transport format, for this + service + </dd> + +<dt> + <tt>transport.vfs.ContentType</tt> (Required) + </dt> + +<dd> + The expected content type for files retrieved for this service. The VFS + transport uses this information to select the appropriate message builder. + +<p>Examples:</p> + +<ul> + +<li> + <tt>text/xml</tt> for plain XML or SOAP + </li> + +<li> + <tt>text/plain; charset=ISO-8859-1</tt> for text files + </li> + +<li> + <tt>application/octet-stream</tt> for binary data + </li> + </ul> + </dd> + +<dt> + <tt>transport.vfs.FileNamePattern</tt> + (Optional) + </dt> + +<dd> + A file name regex pattern to match files against a directory specified by + the FileURI + </dd> + +<dt> + <tt>transport.PollInterval</tt> (Optional) + </dt> + +<dd> The poll interval (in seconds)</dd> + +<dt> + <tt>transport.vfs.ActionAfterProcess</tt> (Optional) + </dt> + +<dd> DELETE or MOVE</dd> + +<dt> + <tt>transport.vfs.MoveAfterProcess</tt> (Optional) + </dt> + +<dd> + The directory to move files after processing (i.e. all files process + successfully) + </dd> + +<dt> + <tt>transport.vfs.ActionAfterErrors</tt> (Optional) + </dt> + +<dd> DELETE or MOVE</dd> + +<dt> + <tt>transport.vfs.MoveAfterErrors</tt> (Optional) + </dt> + +<dd> + The directory to move files after errors (i.e. some of the files succeed + but some fail) + </dd> + +<dt> + <tt>transport.vfs.ActionAfterFailure</tt> (Optional) + </dt> + +<dd> DELETE or MOVE</dd> + +<dt> + <tt>transport.vfs.MoveAfterFailure</tt> (Optional) + </dt> + +<dd> The directory to move after failure (i.e. all files fail)</dd> + +<dt> + <tt>transport.vfs.ReplyFileURI</tt> (Optional) + </dt> + +<dd> Reply file URI</dd> + +<dt> + <tt>transport.vfs.ReplyFileName</tt> (Optional) + </dt> + +<dd> Reply file name (defaults to response.xml)</dd> + +<dt> + <tt>transport.vfs.MoveTimestampFormat</tt> (Optional) + </dt> + +<dd> + Timestamp prefix format for processed file name. java.text.SimpleDateFormat + compatible string. e.g. yyMMddHHmmss'-' + </dd> + +<dt> + <tt>transport.vfs.Locking</tt> (Optional) + </dt> + +<dd> + By-default file locking is turned on in the VFS transport, and this parameter + lets you configure the locking behaviour on a per service basis. Possible values are + <tt>enable</tt> or <tt>disable</tt>, and both these values are important because + the locking can be disabled at the global level by specifying that at the + receiver level and selectively enable locking only for a set of services. + </dd> + +<dt> + <tt>transport.vfs.Streaming</tt> (Optional) + </dt> + +<dd> + If this parameter is set to <tt>true</tt>, the transport will attempt to use a + <tt>javax.activation.DataSource</tt> (instead of a <tt>java.io.InputStream</tt> + ) object to pass the content of the file to the message builder. Note that this + is only supported by some message builders, e.g. for plain text and binary. + +<p> + This allows processing of the message without storing the entire content + in memory. It also has two other side effects: + </p> + +<ul> + +<li> + The incoming file (or connection in case of a remote file) will only + be opened on demand. + </li> + +<li> + Since the data is not cached, the file might be read several times. + </li> + </ul> + +<p> + This option can be used to achieve streaming of large payloads. Note that + this feature is still somewhat experimental and might be superseded by a + more flexible mechanism in a future release. + </p> + </dd> + </dl> + +<p> + Note that since the VFS endpoints are configured at the level of the service, the + only parameter that is available at the listener is the file locking configuration + parameter which is optional and the transport listener is enabled in + <tt>axis2.xml</tt> + simply as follows: + </p> + +<div class="xmlConf"><transportReceiver name="vfs" class="org.apache.synapse.transport.vfs.VFSTransportListener"> + <parameter name="transport.vfs.Locking">enable | disable</parameter> ? +</transportReceiver></div> + </div> + <a name="Transport_sender"></a> +<div class="section" id="Transport_sender"> +<h3><a name="Transport_sender"></a>Transport sender</h3> + +<p> + The VFS transport sender allows to write outgoing messages to local or remote files. + As with the listener, the transport sender supports any protocol for which there + is a VFS provider. + </p> + +<p> + The sender is enabled be the following directive in + <tt>axis2.xml</tt> file locking which is by-default enabled can be configured + using the <tt>transport.vfs.Locking</tt> parameter: + </p> + +<div class="xmlConf"><transportSender name="vfs" class="org.apache.synapse.transport.vfs.VFSTransportSender"> + <parameter name="transport.vfs.Locking">enable | disable</parameter> ? +</transportSender></div> + +<p> + To send a message using the VFS transport, the destination URI must start with + <tt>vfs:</tt> followed by a valid VFS URL. For example, in a Synapse mediation, + one would use: + </p> + +<div class="xmlConf"><endpoint> + <address uri="vfs:file:///var/spool/synapse/out"/> +</endpoint></div> + +<p> + Other examples of valid VFS URLs are (see + <a class="externalLink" href="http://commons.apache.org/vfs/filesystems.html">http://commons.apache.org/vfs/filesystems.html</a> + for more samples): + </p> + +<ul> + +<li> + <tt>file:///directory/filename.ext</tt> + </li> + +<li> + <tt>file:////somehost/someshare/afile.txt</tt> + </li> + +<li> + <tt>jar:../lib/classes.jar!/META-INF/manifest.mf</tt> + </li> + +<li> + <tt>jar:zip:outer.zip!/nested.jar!/somedir</tt> + </li> + +<li> + <tt>ftp://myusername:mypassword@somehost/pub/downloads/somefile.tgz[?vfs.passive=true]</tt> + </li> + </ul> + +<p> + The global configuration of the file locking can be overriden by providing the + <tt>transport.vfs.Locking</tt> as a URL parameter with the appropriate value ( + <tt>enable</tt>, or <tt>disable</tt>) on a given endpoint. + </p> + +<p> + It should be noted that by its nature, the VFS transport sender doesn't support + synchronous responses and should only be invoked using the out-only message + exchange pattern. In a Synapse mediation, this can be forced using the + following mediator: + </p> + +<div class="xmlConf"><property action="set" name="OUT_ONLY" value="true"/></div> + </div> + <a name="Using_SFTP"></a> +<div class="section" id="Using_SFTP"> +<h3><a name="Using_SFTP"></a>Using SFTP</h3> + +<p> + To avoid man-in-the-middle attacks, SSH clients will only connect to hosts with + a known host key. When connecting for the first time to an SSH server, a typical + command line SSH client would request confirmation from the user to add the + server and its fingerprint to the list of known hosts. + </p> + +<p> + The VFS transports supports SFTP through the + <a class="externalLink" href="http://www.jcraft.com/jsch/">JSch</a> + library and this library also requires a list of known hosts. Since Synapse is + not an interactive process, it can't request confirmation from the user and is + therefore unable to automatically add a host to the list. This implies that the + list of known hosts must be set up manually before the transport can connect. + </p> + +<p> + Jsch loads the list of known hosts from a file called <tt>known_hosts</tt> in + the <tt>.ssh</tt> sub-directory of the user's home directory, i.e. <tt>$HOME/.ssh</tt> + in Unix and <tt>%HOMEPATH%\.ssh</tt> in Windows. The location and format of this + file are compatible with the <a class="externalLink" href="http://www.openssh.com/">OpenSSH</a> + client. + </p> + +<p> + Since the file not only contains a list of host names but also the fingerprints + of their host keys, the easiest way to add a new host to that file is to simply + use the OpenSSH client to open an SSH session on the target host. The client will + then ask to add the credentials to the <tt>known_hosts</tt> file. Note that if + the SSH server is configured to only allow SFTP sessions, but no interactive + sessions, the connection will actually fail. Since this doesn't rollback the + change to the <tt>known_hosts</tt> file, this error can be ignored. + </p> + </div> + <a name="Known_issues"></a> +<div class="section" id="Known_issues"> +<h3><a name="Known_issues"></a>Known issues</h3> + +<p> + The VFS listener will start reading a file as soon as it appears in the configured + location. To avoid processing half written files, the creation of these files should + be made atomic. On most platforms, this can be achieved by writing the data to a + temporary file and then moving the file to the target location. Note however that + a move operation is only atomic if the source and destination are on the same + physical file system. The location for the temporary file should be chosen with + that constraint in mind. + </p> + +<p> + It should also be noted that the VFS transport sender doesn't create files atomically. + </p> + </div> + </div> + <a name="FIX_transport"></a> +<div class="section" id="FIX_transport"> +<h2><a name="FIX_transport"></a>FIX transport</h2> + +<p>A general overview about the FIX transport can be found in the following articles:</p> + +<ul> + +<li> + <a class="externalLink" href="http://wso2.org/library/3449">Apache Synapse FIX'ed</a> + </li> + +<li> + <a class="externalLink" href="http://wso2.org/library/3837">Using the WSO2 ESB and FIX</a> + (also applies to Synapse) + </li> + </ul> + <a name="Setting_up_the_FIX_Transport"></a> +<div class="section" id="Setting_up_the_FIX_Transport"> +<h3><a name="Setting_up_the_FIX_Transport"></a>Setting up the FIX Transport</h3> + +<p> + To use the FIX transport, you need a local + <a class="externalLink" href="http://www.quickfixj.org">Quickfix/J</a> + installation. Download Quickfix/J from + <a class="externalLink" href="http://www.quickfixj.org/downloads">http://www.quickfixj.org/downloads</a> + . + </p> + +<p> + To enable the FIX transport, you need to uncomment the FIX transport sender and + FIX transport receiver configurations in the SYNAPSE_HOME/repository/conf/axis2.xml. + Simply locate and uncomment the FIXTransportSender and FIXTransportListener sample + configurations. Also, add the following jars to the Synapse class path + (SYNAPSE_HOME/lib directory). + </p> + +<ul> + +<li>quickfixj-core.jar</li> + +<li>quickfixj-msg-fix40.jar</li> + +<li>quickfixj-msg-fix41.jar</li> + +<li>quickfixj-msg-fix42.jar</li> + +<li>quickfixj-msg-fix43.jar</li> + +<li>quickfixj-msg-fix44.jar</li> + +<li>mina-core.jar</li> + +<li>slf4j-api.jar</li> + +<li>slf4j-jdk14.jar</li> + </ul> + +<p>All these jars are shipped with the Quickfix/J binary distribution.</p> + </div> + <a name="FIX_Transport_Parameters"></a> +<div class="section" id="FIX_Transport_Parameters"> +<h3><a name="FIX_Transport_Parameters"></a>FIX Transport Parameters</h3> + +<p> + This is the list of all parameters accepted by the FIX transport. Refer the + sample 257 and 258 to see how some of them are used in practice. + </p> + +<dl> + +<dt> + <tt>transport.fix.AcceptorConfigURL</tt> + </dt> + +<dd> + If a service needs to listen to incoming FIX messages from a remote initiator, + then Synapse needs to create an acceptor. This parameter should contain the + URL of the file which contains the FIX configuration for the acceptor. + (See sample 257) + </dd> + +<dt> + <tt>transport.fix.InitiatorConfigURL</tt> + </dt> + +<dd> + If a service needs to send FIX messages to a remote acceptor Synapse should + create an initiator. This parameter should contain the URL of the file which + contains the FIX configuration for the initiator. (See sample 257) + </dd> + +<dt> + <tt>transport.fix.AcceptorMessageStore</tt> + </dt> + +<dd> + The type of message store to be used with the acceptor. Allowed values for + this parameter are 'file', 'jdbc', 'memory' and 'sleepycat'. If not specified + memory based message store will be used by default. Additional parameters + required to configure each of the message stores should be specified in the + acceptor configuration file. + </dd> + +<dt> + <tt>transport.fix.InitiatorMessageStore</tt> + </dt> + +<dd> + Same as the above but applies only for the initiators. Additional parameters + required to configure each of the message stores should be specified in the + initiator configuration file. + </dd> + +<dt> + <tt>transport.fix.AcceptorLogFactory</tt> + </dt> + +<dd> + Specifies the transport level log factory to be used to log messages going + through the acceptor. FIX messages are logged without putting them in SOAP + envelopes at this level. Accepted values are 'console', 'file' and 'jdbc'. + If not specified no logging will be done at the transport level. Additional + parameters required to configure each of the lof factories should be specified + in the acceptor configuration file. + </dd> + +<dt> + <tt>transport.fix.InitiatorLogFactory</tt> + </dt> + +<dd> + Specifies the transport level log factory to be used to log messages going + through the initiator. Functionality is similar to the above. Additional + parameters required to configure each of the lof factories should be specified + in the initiator configuration file. + </dd> + +<dt> + <tt>transport.fix.ResponseDeliverToCompID</tt> + </dt> + +<dd> + If a response FIX message sent from Synapse to a remote FIX engine should be + forwarded from the remote engine to another party, this parameter can be used + to set the DeliverToCompID field of the messages at Synapse. + </dd> + +<dt> + <tt>transport.fix.ResponseDeliverToSubID</tt> + </dt> + +<dd> + If a response FIX message sent from Synapse to a remote FIX engine should be + forwarded from the remote engine to another party, this parameter can be used + to set the DeliverToSubID field of the messages at Synapse. + </dd> + +<dt> + <tt>transport.fix.ResponseDeliverToLocationID</tt> + </dt> + +<dd> + If a response FIX message sent from Synapse to a remote FIX engine should be + forwarded from the remote engine to another party, this parameter can be used + to set the DeliverToLocationID field of the messages at Synapse. + </dd> + +<dt> + <tt>transport.fix.ServiceName</tt> + </dt> + +<dd> + Used when messages coming over a different protocol has to be forwarded over + FIX. The value must be equal to the name of the service and the scope must be + 'axis2-client' (See sample 258) + </dd> + +<dt> + <tt>transport.fix.SendAllToInSequence</tt> + </dt> + +<dd> + When there are multiple responses to a FIX request and when we need only one + of them to be sent to the original requester this parameter has to be set to + 'false'. This mostly comes handy when the original requester is communicating + over a different protocol (like HTTP). If this parameter is not set to 'false' + at such scenarios messages might get into a loop. (See sample 258) + </dd> + +<dt> + <tt>transport.fix.BeginStringValidation</tt> + </dt> + +<dd> + When the FIX messages sent to Synapse should not be forwarded to a FIX session + with a different BeginString value this parameter can be set to 'true'. Setting + this parameter to 'true' will enforce this restriction. + </dd> + </dl> + </div> + </div> + <a name="amqp_transport"></a> +<div class="section" id="amqp_transport"> +<h2><a name="AMQP_transport"></a>AMQP transport</h2> + <a name="setting_up_the_amqp_transport"></a> +<div class="section" id="setting_up_the_amqp_transport"> +<h3><a name="Setting_Up_the_Transport"></a>Setting Up the Transport</h3> + +<p> + AMQP transport is based on the widely used + <a class="externalLink" href="http://www.rabbitmq.com/java-client.html">Java AMQP client</a> library from + <a class="externalLink" href="http://www.rabbitmq.com/">RabbitMQ</a>. + The client library is not distributed with Apache Synapse, and hence in order to use + the AMQP transport, download the RabbitMQ Java client and copy the client library + (rabbitmq-client.jar) into Synapse classpath (SYNAPSE_HOME/lib directory). + </p> + +<p> + To enable the AMQP transport, uncomment the AMQP transport sender and AMQP transport + receiver configurations in the SYNAPSE_HOME/repository/conf/axis2.xml. + </p> + </div> + <a name="amqp_transport_parameters"></a> +<div class="section" id="amqp_transport_parameters"> +<h3><a name="AMQP_Transport_Parameters"></a>AMQP Transport Parameters</h3> + +<p> + Following parameters can be configured as part of AMQP transport receiver, sender, + a proxy service or an AMQP endpoint declaration. + </p> + +<dl> + +<dt> + <tt>transport.amqp.Uri</tt> + </dt> + +<dd>The connection URL for the broker of the form + amqp://userName:password@hostName:portNumber/virtualHost</dd> + +<dt> + <tt>transport.amqp.BrokerList</tt> + </dt> + +<dd>The list of broker of the form, host1:port1,host2:port2... which will be used + as the address array in AMQP connection to the broker</dd> + +<dt> + <tt>transport.amqp.ExchangeName</tt> + </dt> + +<dd>The name of the exchange to connect</dd> + +<dt> + <tt>transport.amqp.IsExchangeDurable</tt> + </dt> + +<dd>Should the exchange be declared as durable?</dd> + +<dt> + <tt>transport.amqp.IsExchangeAutoDelete</tt> + </dt> + +<dd>Should the exchange be auto delete? Possible values are true or false</dd> + +<dt> + <tt>transport.amqp.ChannelPreFetchSize</tt> + </dt> + +<dd>The channel pre fetch size for fair dispatch</dd> + +<dt> + <tt>transport.amqp.ChannelPreFetchCountSize</tt> + </dt> + +<dd>The channel prefetch count for fair dispatch</dd> + +<dt> + <tt>transport.amqp.ExchangeType</tt> + </dt> + +<dd>Type of the exchange to use. Possible values are, fanout, direct, header or topic</dd> + +<dt> + <tt>transport.amqp.ExchangeInternal</tt> + </dt> + +<dd>Should the exchange be declared as internal? Possible values are true or false </dd> + +<dt> + <tt>transport.amqp.BindExchange</tt> + </dt> + +<dd>The name of the exchange that the publisher/consumer should publish/consume message to.</dd> + +<dt> + <tt>transport.amqp.BindingKeys</tt> + </dt> + +<dd>The comma separated binding keys this queue should be bound into exchange</dd> + +<dt> + <tt>transport.amqp.RoutingKey</tt> + </dt> + +<dd>The routing key to be used by the publisher.</dd> + +<dt> + <tt>transport.amqp.ConsumerTx</tt> + </dt> + +<dd>Use transactions at consumer side if set to true. By default, this will be + considered false and explicit acknowledgement will be done</dd> + +<dt> + <tt>transport.amqp.QueueName</tt> + </dt> + +<dd>The name of the queue</dd> + +<dt> + <tt>transport.amqp.IsQueueDurable</tt> + </dt> + +<dd>Should the queue declare as durable? Possible values are true or false.</dd> + +<dt> + <tt>transport.amqp.IsQueueRestricted</tt> + </dt> + +<dd>Should the queue declare as restricted? Possible values are true or false.</dd> + +<dt> + <tt>transport.amqp.IsQueueAutoDelete</tt> + </dt> + +<dd>Should the queue declare as auto delete when it's no longer in use?. + Possible values are true or false.</dd> + +<dt> + <tt>transport.amqp.OperateOnBlockingMode</tt> + </dt> + +<dd>True if the polling task should wait until it process the accepted + messages. This can be used in conjunction with a single thread polling + task (in the whole transport, i.e. only a single AMQP proxy per flow) + to achieve in order delivery</dd> + +<dt> + <tt>transport.amqp.ConnectionFactoryName</tt> + </dt> + +<dd>The connection factory to be used either with consumer or producer.</dd> + +<dt> + <tt>transport.amqp.ResponseConnectionFactoryName</tt> + </dt> + +<dd>In a two-way scenario, which connection factory of the senders' should be used + to send the response</dd> + +<dt> + <tt>transport.amqp.ScheduledTaskInitialDelay</tt> + </dt> + +<dd>The initial delay (in milliseconds) that the polling task should delay before initial attempt</dd> + +<dt> + <tt>transport.amqp.ScheduledTaskDelay</tt> + </dt> + +<dd>The delay (in milliseconds) that the polling task should delay before next attempt.</dd> + +<dt> + <tt>transport.amqp.ScheduledTaskTimeUnit</tt> + </dt> + +<dd>The time unit which should use to calculate, + transport.amqp.ScheduledTaskInitialDelay and transport.amqp.ScheduledTaskDelay.</dd> + +<dt> + <tt>transport.amqp.NoOfConcurrentConsumers</tt> + </dt> + +<dd>Number of concurrent consumers per polling task.</dd> + +<dt> + <tt>transport.amqp.NoOfDispatchingTask</tt> + </dt> + +<dd>Number of dispatching task to use any request messages to actual processing task.</dd> + +<dt> + <tt>transport.amqp.ContentType</tt> + </dt> + +<dd>Configure the content type as a service parameter.</dd> + +<dt> + <tt>AMQP_CONTENT_TYPE</tt> + </dt> + +<dd>Message context property to set the AMQP message content type.</dd> + +<dt> + <tt>AMQP_CONTENT_ENCODING</tt> + </dt> + +<dd> Message context property to set the AMQP message encoding</dd> + +<dt> + <tt>AMQP_HEADER_*</tt> + </dt> + +<dd>Specify any AMQP headers as message context properties using AMQP_HEADER_*</dd> + +<dt> + <tt>AMQP_DELIVERY_MODE</tt> + </dt> + +<dd>Message context property to set the AMQP message delivery mode</dd> + +<dt> + <tt>AMQP_PRIORITY</tt> + </dt> + +<dd>Message context property to set the AMQP message priority.</dd> + +<dt> + <tt>AMQP_CORRELATION_ID</tt> + </dt> + +<dd>Message context property to set the AMQP message correlation id</dd> + +<dt> + <tt>AMQP_REPLY_TO</tt> + </dt> + +<dd>Message context property to set the AMQP message reply to header.</dd> + +<dt> + <tt>AMQP_EXPIRATION</tt> + </dt> + +<dd>Message context property to set the AMQP expiration.</dd> + +<dt> + <tt>AMQP_MESSAGE_ID</tt> + </dt> + +<dd>Message context property to set the message id of the AMQP message</dd> + +<dt> + <tt>AMQP_TIME_STAMP</tt> + </dt> + +<dd>Message context property to set the timestamp of the AMQP message.</dd> + +<dt> + <tt>AMQP_TYPE</tt> + </dt> + +<dd>Message context property to set the type of the AMQP message</dd> + +<dt> + <tt>AMQP_PRODUCER_TX</tt> + </dt> + +<dd>Use transactions at producer side. Possible values are tx(for blocking transactions), + lwpc(for light weight producer connections). + </dd> + +<dt> + <tt>connection-factory-pool-size</tt> + </dt> + +<dd>A system property to set the worker pool size of the connection factory executor service.</dd> + +<dt> + <tt>worker-pool-size</tt> + </dt> + +<dd>A system property to set the worker pool size used by deployed services for polling broker.</dd> + +<dt> + <tt>semaphore-time-out</tt> + </dt> + +<dd>A system property to set the timeout (in seconds) of semaphore which waits for + a response. + </dd> + +<dt> + <tt>initial-reconnect-duration</tt> + </dt> + +<dd>If a polling task encounter an exception due to some reason(most probably + due to broker outage) it will be suspended until a successful re-connect. + This system property defines the initial duration that the re-connection + check task should be suspended (1000 ms by default) before next re-try.</dd> + +<dt> + <tt>reconnection-progression-factor</tt> + </dt> + +<dd>A system property to define the factor (2.0 by default) to multiply the initial + suspended duration to calculate the next suspending duration for the + re-connection check task.</dd> + +<dt> + <tt>maximum-reconnection-duration</tt> + </dt> + +<dd>The maximum duration that re-connection check task should be suspended( + 10 minutes by default). After this time is reached, the suspended duration + will be fall back to its original initial configured duration. + </dd> + </dl> + </div> + <a name="amqp_transport_ex"></a> +<div class="section" id="amqp_transport_ex"> +<h3><a name="Sample_Configurations"></a>Sample Configurations</h3> + +<p>Producer example</p> + +<div class="xmlConf"> +<proxy name="ProducerProxy" transports="http"> + <target> + <inSequence> + <property action="set" name="OUT_ONLY" value="true"/> + <property name="PRESERVE_WS_ADDRESSING" value="true"/>" + <log level="custom"> + <property name="status" value="At ProducerProxy"/> + </log> + </inSequence> + <endpoint> + <!--use the defined connection factory in AMQP transport sender--> + <address + uri="amqp://SimpleStockQuoteService?transport.amqp.ConnectionFactoryName=producer&transport.amqp.QueueName=ProducerProxy"/> + </endpoint> + <outSequence> + <send/> + </outSequence> + </target> +</proxy> + </div> + +<p>Consumer example</p> + +<div class="xmlConf"> +<proxy name="ConsumerProxy" transports="amqp"> + <target> + <inSequence> + <property action="set" name="OUT_ONLY" value="true"/> + <log level="custom"> + <property name="status" value="At ConsumerProxy"/> + </log> + </inSequence> + <endpoint> + <address uri="http://localhost:9000/services/SimpleStockQuoteService"/> + </endpoint> + <outSequence> + <send/> + </outSequence> + </target> + <parameter name="transport.amqp.ConnectionFactoryName">consumer</parameter> + <parameter name="transport.amqp.QueueName">ProducerProxy</parameter> +</proxy> + </div> + +<p>Routing example</p> + +<div class="xmlConf"> +<proxy name="DirectPublisherProxy" transports="http"> + <target> + <inSequence> + <property action="set" name="OUT_ONLY" value="true"/> + <log level="custom"> + <property name="status" value="At DirectPublisherProxy"/> + </log> + </inSequence> + <endpoint> + <!--use the defined connection factory in AMQP transport sender, note how we don't provide + any queue name because this is bind to the exchange--> + <address + uri="amqp://?transport.amqp.ConnectionFactoryName=publisher&transport.amqp.ExchangeName=direct_logs&transport.amqp.ExchangeType=direct&transport.amqp.RoutingKey=error"/> + </endpoint> + <outSequence> + <send/> + </outSequence> + </target> +</proxy> + +<proxy name="DirectSubscriberProxy1" transports="amqp"> + <target> + <inSequence> + <property action="set" name="OUT_ONLY" value="true"/> + <log level="custom"> + <property name="status" value="At DirectSubscriberProxy 1"/> + </log> + </inSequence> + <endpoint> + <address uri="http://localhost:9000/services/SimpleStockQuoteService"/> + </endpoint> + <outSequence> + <send/> + </outSequence> + </target> + <parameter name="transport.amqp.ConnectionFactoryName">subscriber</parameter> + <parameter name="transport.amqp.ExchangeName">direct_logs</parameter> + <parameter name="transport.amqp.ExchangeType">direct</parameter> + <parameter name="transport.amqp.BindingKeys">warning,error</parameter> +</proxy> + +<proxy name="DirectSubscriberProxy2" transports="amqp"> + <target> + <inSequence> + <property action="set" name="OUT_ONLY" value="true"/> + <log level="custom"> + <property name="status" value="At DirectSubscriberProxy 2"/> + </log> + </inSequence> + <endpoint> + <address uri="http://localhost:9000/services/SimpleStockQuoteService"/> + </endpoint> + <outSequence> + <send/> + </outSequence> + </target> + <parameter name="transport.amqp.ConnectionFactoryName">subscriber</parameter> + <parameter name="transport.amqp.ExchangeName">direct_logs</parameter> + <parameter name="transport.amqp.ExchangeType">direct</parameter> + <parameter name="transport.amqp.BindingKeys">error</parameter> +</proxy> + </div> + +<p>Producer transactions</p> + +<div class="xmlConf"> +<proxy name="ProducerTxProxy1" transports="http"> + <target> + <inSequence> + <property action="set" name="OUT_ONLY" value="true"/> + <property action="set" name="AMQP_PRODUCER_TX" scope="axis2" value="lwpc"/> + <log level="custom"> + <property name="status" value="At ProducerTxProxy1, use light weight producer confirm..."/> + </log> + </inSequence> + <endpoint> + <!--use the defined connection factory in AMQP transport sender--> + <address + uri="amqp://SimpleStockQuoteService?transport.amqp.ConnectionFactoryName=producer&transport.amqp.QueueName=ProducerProxy"/> + </endpoint> + <outSequence> + <send/> + </outSequence> + </target> +</proxy> + </div> + </div> + </div> + + + </div> + </div> + </div> + <hr/> + <footer> + <div class="container-fluid"> + <div class="row-fluid"> + <p>Copyright ©2005–2023 +<a href="http://www.apache.org/">Apache Software Foundation</a>. +All rights reserved.</p> + </div> + </div> + </footer> + </body> +</html>
