Author: buildbot Date: Thu Nov 27 16:20:55 2014 New Revision: 930784 Log: Production update by buildbot for activemq
Modified: websites/production/activemq/content/amqp.html websites/production/activemq/content/cache/main.pageCache Modified: websites/production/activemq/content/amqp.html ============================================================================== --- websites/production/activemq/content/amqp.html (original) +++ websites/production/activemq/content/amqp.html Thu Nov 27 16:20:55 2014 @@ -107,9 +107,11 @@ </div></div><p>This transport uses the <a shape="rect" class="external-link" href="http://activemq.apache.org/configuring-transports.html#ConfiguringTransports-TheNIOTransport">NIO transport</a> underneath and will generally use much less threads than the standard connector. This connector can help if you want to use <a shape="rect" class="external-link" href="http://activemq.apache.org/how-do-i-configure-10s-of-1000s-of-queues-in-a-single-broker-.html">large number of queues</a></p><h3 id="AMQP-EnablingAMQPoverSSL">Enabling AMQP over SSL</h3><p>It's easy to configure ActiveMQ to use AMQP over a SSL connection. All you have to do is use the <code>amqp+ssl</code> transport prefix instead of <code>amqp</code>. For example, add the following transport configuration in your XML file:</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[ <transportConnector name="amqp+ssl" uri="amqp+ssl://localhost:5671"/> ]]></script> -</div></div><ul><li>For more details on using SSL with ActiveMQ, see the following article (<a shape="rect" class="external-link" href="http://activemq.apache.org/how-do-i-use-ssl.html">How do I use SSL</a>).</li></ul><h3 id="AMQP-WorkingwithDestinationswithAMQP">Working with Destinations with AMQP</h3><p>You should prefix destination address with `queue://` to use Queue based destinations or `topic://` to use topic based destinations. If an AMQP address is used without the prefix, it will be used as a Queue.</p><h3 id="AMQP-Prefetchsizeandcredit">Prefetch size and credit</h3><p>When AMQP receiver connects to the broker, its mapped to the JMS consumer. This JMS consumer has to have appropriate <a shape="rect" href="what-is-the-prefetch-limit-for.html">prefetch size</a> set. That prefetch size will be set from the receiving link credit if set or default value of 100 will be used. You can also tune a default value using <code>prefetch</code> transport attribute, like</p><div class="co de panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> +</div></div><ul><li>For more details on using SSL with ActiveMQ, see the following article (<a shape="rect" class="external-link" href="http://activemq.apache.org/how-do-i-use-ssl.html">How do I use SSL</a>).</li></ul><h3 id="AMQP-WorkingwithDestinationswithAMQP">Working with Destinations with AMQP</h3><p>You should prefix destination address with `queue://` to use Queue based destinations or `topic://` to use topic based destinations. If an AMQP address is used without the prefix, it will be used as a Queue.</p><h3 id="AMQP-Prefetchsizeandcredit">Prefetch size and credit</h3><p>When AMQP receiver connects to the broker, its mapped to the JMS consumer. This JMS consumer has to have appropriate <a shape="rect" href="what-is-the-prefetch-limit-for.html">prefetch size</a> set. <span style="line-height: 1.4285715;">The broker will respect the credit set by the client or use default value of 1000 if client don't set it.</span></p><p>You can also tune a default value using <code>pref etch</code> transport attribute, like</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[<transportConnector name="amqp" uri="amqp://0.0.0.0:5672?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600&amp;transport.prefetch=10"/>]]></script> -</div></div><p class="p1">Note that the same value will be used for broker-side amqp receiver link that handles incoming messages.</p><h3 id="AMQP-MappingtoJMS">Mapping to JMS</h3><p>There are three basic conversion strategies that can be used with AMQP and interoperating with the JMS API.</p><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Strategy</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Description</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>native</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Default</strong> Wraps the bytes of the AMQP message into a JMS BytesMessage and<br clear="none"> also maps the headers of the AMQP message to headers on the JMS message</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>raw</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Wraps the bytes of the AMQP message into a JMS BytesMessa ge</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>jms</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Maps headers of the AMQP message to JMS message headers and maps the<br clear="none"> body of the AMQP message to JMS body</p></td></tr></tbody></table></div><p>Set the <strong>transformer</strong> transport option on the transportConnector to the desired mapping strategy. For example, to interoperate with JMS at the payload level, set the <strong>transformer</strong> option to <strong>jms</strong></p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> +</div></div><p class="p1">In this case, client preference will be ignored and the configured value will be used.</p><p class="p1">You can also tune broker-side amqp receiver link that handles incoming messages. It will use credit of 1000 messages by default, but you can override this by using <span><code>producerCredit</code> property, like </span></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[<transportConnector name="amqp" uri="amqp://0.0.0.0:5672?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600&amp;transport.producerCredit=10000"/>]]></script> +</div></div><h3 id="AMQP-MappingtoJMS">Mapping to JMS</h3><p>There are three basic conversion strategies that can be used with AMQP and interoperating with the JMS API.</p><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Strategy</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Description</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>native</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong>Default</strong> Wraps the bytes of the AMQP message into a JMS BytesMessage and<br clear="none"> also maps the headers of the AMQP message to headers on the JMS message</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>raw</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Wraps the bytes of the AMQP message into a JMS BytesMessage</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>jms</p></td><td colspan="1" rowspan="1" class="con fluenceTd"><p>Maps headers of the AMQP message to JMS message headers and maps the<br clear="none"> body of the AMQP message to JMS body</p></td></tr></tbody></table></div><p>Set the <strong>transformer</strong> transport option on the transportConnector to the desired mapping strategy. For example, to interoperate with JMS at the payload level, set the <strong>transformer</strong> option to <strong>jms</strong></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[ <transportConnector name="amqp" uri="amqp://localhost:5672?transport.transformer=jms"/> ]]></script> </div></div><h4 id="AMQP-HowAMQPmessageheadersaremappedtoJMSHeaders:">How AMQP message headers are mapped to JMS Headers:</h4><p>The following headers are mapped regardless of the transformer used:</p><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>AMQP Message</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>JMS Message</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Notes</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>JMS_AMQP_NATIVE</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Will be set to true if the transformer is 'native' or 'raw', false otherwise.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>message-format</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>JMS_AMQP_MESSAGE_FORMAT</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> </p ></td></tr></tbody></table></div><p>The following headers are mapped if the >transformer is 'native' or 'jms':</p><div class="table-wrap"><table >class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" >class="confluenceTh"><p>AMQP Message</p></th><th colspan="1" rowspan="1" >class="confluenceTh"><p>JMS Message</p></th><th colspan="1" rowspan="1" >class="confluenceTh"><p>Notes</p></th></tr><tr><td colspan="1" rowspan="1" >class="confluenceTd"><p>header.durable</p></td><td colspan="1" rowspan="1" >class="confluenceTd"><p>JMSDeliveryMode</p></td><td colspan="1" rowspan="1" >class="confluenceTd"><p>javax.jms.Message.DEFAULT_DELIVERY_MODE if not >set</p></td></tr><tr><td colspan="1" rowspan="1" >class="confluenceTd"><p>header.priority</p></td><td colspan="1" rowspan="1" >class="confluenceTd"><p>JMSPriority</p></td><td colspan="1" rowspan="1" >class="confluenceTd"><p>javax.jms.Message.DEFAULT_PRIORITY if not >set</p></td></tr><tr><td colspan="1" rowspan="1" >class="confluenceTd"><p>header.ttl</ p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>JMSExpiration</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>javax.jms.Message.DEFAULT_TIME_TO_LIVE if not set</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>header.first-acquirer</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>JMS_AMQP_FirstAcquirer</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>header.deliveryCount</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>JMSXDeliveryCount</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>delivery-annotations.<strong><span style="text-decoration: underline;">name</span></strong></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>JMS_AMQP_DA_<strong><span style="text-decoration: underline;">name</span></strong></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> </p></td></tr><tr><td colspan="1" r owspan="1" class="confluenceTd"><p>message-annotations.x-opt-jms-type</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>JMSType</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>message-annotations.x-opt-to-type</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Type of the JMSDestination</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Comma separated list of 'queue', 'topic', or 'temporary', defaults to queue if not set.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>message-annotations.x-opt-reply-type</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Type of the JMSReplyTo</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Comma separated list of 'queue', 'topic', or 'temporary', defaults to queue if not set.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>message-annotations.<strong><span style="text-de coration: underline;">name</span></strong></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>JMS_AMQP_MA_<strong><span style="text-decoration: underline;">name</span></strong></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>application-properties.JMSXGroupID</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>JMSXGroupID</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>application-properties.JMSXGroupSequence</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>JMSXGroupSequence</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>application-properties.JMSXUserID</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>JMSXUserID</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> </p></ td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>application-properties.<strong><span style="text-decoration: underline;">name</span></strong></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><strong><span style="text-decoration: underline;">name</span></strong></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>properties.message-id</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>JMSMessageID</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Auto generated if not set</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>properties.user-id</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>JMSXUserID</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>properties.user-id is decoded as a UTF-8 String</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>properties.to</p></td><td colspan="1" rowspan="1" class ="confluenceTd"><p>JMSDestination</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The name of the JMSDestination</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>properties.subject</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>JMS_AMQP_Subject</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>properties.reply-to</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>JMSReplyTo</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The name of the JMSReplyTo</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>properties.correlation-id</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>JMSCorrelationID</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>properties.content-type</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>J MS_AMQP_ContentType</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>properties.content-encoding</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>JMS_AMQP_ContentEncoding</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>properties.creation-time</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>JMSTimestamp</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>properties.group-sequence</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>JMSXGroupSequence</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>properties.reply-to-group-id</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>JMS_AMQP_ReplyToGroupID</p></ td><td colspan="1" rowspan="1" class="confluenceTd"><p> </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>footer.<strong><span style="text-decoration: underline;">name</span></strong></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>JMS_AMQP_FT_<strong><span style="text-decoration: underline;">name</span></strong></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> </p></td></tr></tbody></table></div><p>AMQP property value types are converted as follows:</p><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>AMQP Type</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Java Type</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Notes</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>bool</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Boolean</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> </p></td></tr ><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>byte</p></td><td >colspan="1" rowspan="1" class="confluenceTd"><p>Byte</p></td><td colspan="1" >rowspan="1" class="confluenceTd"><p> </p></td></tr><tr><td colspan="1" >rowspan="1" class="confluenceTd"><p>short</p></td><td colspan="1" rowspan="1" >class="confluenceTd"><p>Short</p></td><td colspan="1" rowspan="1" >class="confluenceTd"><p> </p></td></tr><tr><td colspan="1" rowspan="1" >class="confluenceTd"><p>int</p></td><td colspan="1" rowspan="1" >class="confluenceTd"><p>Integer</p></td><td colspan="1" rowspan="1" >class="confluenceTd"><p> </p></td></tr><tr><td colspan="1" rowspan="1" >class="confluenceTd"><p>long</p></td><td colspan="1" rowspan="1" >class="confluenceTd"><p>Long</p></td><td colspan="1" rowspan="1" >class="confluenceTd"><p> </p></td></tr><tr><td colspan="1" rowspan="1" >class="confluenceTd"><p>ubyte</p></td><td colspan="1" rowspan="1" >class="confluenceTd"><p>Byte or Short</p></td><td colspan="1" rowspan= "1" class="confluenceTd"><p>Short is used if value > Byte.MAX_VALUE</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>ushort</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Short or Integer</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Integer is used if value > Short.MAX_VALUE</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>uint</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Integer or Long</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Long is used if value > Integer.MAX_VALUE</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>ulong</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Long</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>double</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Double</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>&# 160;</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>float</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Float</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>symbol</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>String</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> </p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>binary</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>String</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Hex encoding of the binary value</p></td></tr></tbody></table></div><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><h4 id="AMQP-HowAMQPmessagesbodiesaremappedtoJMSMessages:">How AMQP messages bodies are mapped to JMS Messages:</h4><p>If the transformer is set to 'jms', the they type of JMS message will depend on the body type of the AMQP message.</p><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Body Type</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>JMS Message Type</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>null</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Message</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>Data</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>BytesMessage</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>AmqpSequence</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>StreamMessage</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>AmqpValue holding a null</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Message</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>AmqpValue holding a String</p></td><td colspan="1" rowspan="1" class="confluen ceTd"><p>TextMessage</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>AmqpValue holding a binary</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>BytesMessage</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>AmqpValue holding a list</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>StreamMessage</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>AmqpValue</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>ObjectMessage</p></td></tr></tbody></table></div><h3 id="AMQP-AMQP1.0clientlibrary">AMQP 1.0 client library</h3><p>You can use <a shape="rect" class="external-link" href="http://qpid.apache.org/proton/">Apache Qpid Proton</a>.</p></div> Modified: websites/production/activemq/content/cache/main.pageCache ============================================================================== Binary files - no diff available.