blob: f6ad32719f9ee41da298c64a4262970b5534246c [file] [log] [blame]
<div class="wiki-content maincontent"><p>The configuration of ActiveMQ is so slick, we decided to take a similar approach with ActiveMQ-CPP. All configuration is achieved via URI-encoded parameters, either on the connection or destinations. Through the URIs, you can configure virtually every facet of your ActiveMQ-CPP client. The tables below show the comprehensive set of parameters.</p>
<h2 id="ConfiguringActiveMQCPP-ConnectionURIParameters"><strong>Connection URI Parameters</strong></h2>
<h4 id="ConfiguringActiveMQCPP-ExampleConfiguration">Example Configuration</h4>
<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">
cf = new ActiveMQConnectionFactory(
"tcp://localhost:61616?wireFormat=openwire&amp;wireFormat.tightEncodingEnabled=true");
</pre>
</div></div>
<h3 id="ConfiguringActiveMQCPP-SocketOptions"><strong>Socket Options</strong></h3>
<div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Option Name</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Default</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Description</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>inputBufferSize</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>10000</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The number of bytes in the buffered input stream's buffer</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>outputBufferSize</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>10000</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The number of bytes in the buffered output stream's buffer</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>soLinger</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>0</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Socket SOLinger value</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>soKeepAlive</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>false</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Socket SOKeepAlive value</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>soReceiveBufferSize</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>-1</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Socket receive buffer. If -1, use OS default.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>soSendBufferSize</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>-1</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Socket send buffer. If -1, use OS default.</p></td></tr></tbody></table></div>
<h3 id="ConfiguringActiveMQCPP-TransportOptions"><strong>Transport Options</strong></h3>
<div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Option Name</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Default</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Description</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>commandTracingEnabled</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>false</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>If true, enables tracing of incoming and outgoing transport commands</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>tcpTracingEnabled</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>false</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>If true, enables tracing of raw network IO (in hex)</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>useAsyncSend</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>false</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>If true, enables asynchronous sending of messages.</p></td></tr></tbody></table></div>
<h3 id="ConfiguringActiveMQCPP-TransactionOptions"><strong>Transaction Options</strong></h3>
<div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Option Name</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Default</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Description</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>transaction.maxRedeliveryCount</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>5</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Maximum number of redelivery attempts.</p></td></tr></tbody></table></div>
<h3 id="ConfiguringActiveMQCPP-WireFormatProtocolOptions"><strong>Wire Format Protocol Options</strong></h3>
<div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Option Name</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Default</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Description</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>wireFormat</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>openwire</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Selects the wire format to use. Out of the box, can be either stomp or openwire.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>wireFormat.stackTraceEnabled</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>false</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Should the stack trace of exception that occur on the broker be sent to the client? Only used by openwire protocol.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>wireFormat.cacheEnabled</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>false</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Should commonly repeated values be cached so that less marshalling occurs? Only used by openwire protocol.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>wireFormat.tcpNoDelayEnabled</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>false</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Does not affect the wire format, but provides a hint to the peer that TCP nodelay should be enabled on the communications Socket. Only used by openwire protocol.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>wireFormat.sizePrefixDisabled</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>false</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Should serialized messages include a payload length prefix? Only used by openwire protocol.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>wireFormat.tightEncodingEnabled</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>false</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Should wire size be optimized over CPU usage? Only used by the openwire protocol.</p></td></tr></tbody></table></div>
<h2 id="ConfiguringActiveMQCPP-DestinationURIParameters"><strong>Destination URI Parameters</strong></h2>
<h4 id="ConfiguringActiveMQCPP-ExampleConfiguration.1">Example Configuration</h4>
<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">
d = session-&gt;createTopic("com.foo?consumer.prefetchSize=2000&amp;consumer.noLocal=true");
</pre>
</div></div>
<h3 id="ConfiguringActiveMQCPP-GeneralOptions"><strong>General Options</strong></h3>
<div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Option Name</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Default</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Description</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>consumer.prefetchSize</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> 1000 </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> The number of message the consumer will <a shape="rect" href="what-is-the-prefetch-limit-for.html">prefetch</a>.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>consumer.maximumPendingMessageLimit</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> 0 </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> Use to control if messages are dropped if a <a shape="rect" href="slow-consumer-handling.html">slow consumer</a> situation exists.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>consumer.noLocal </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> false </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> Same as the noLocal flag on a Topic consumer. Exposed here so that it can be used with a queue.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>consumer.dispatchAsync </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> false </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> Should the broker <a shape="rect" href="consumer-dispatch-async.html">dispatch messages asynchronously</a> to the consumer.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>consumer.retroactive</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> false</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> Is this a <a shape="rect" href="retroactive-consumer.html">Retroactive Consumer</a>.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>consumer.selector</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> null </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> JMS Selector used with the consumer.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>consumer.exclusive</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> false </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> Is this an <a shape="rect" href="exclusive-consumer.html">Exclusive Consumer</a>.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>consumer.priority</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> 0 </p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> Allows you to configure a <a shape="rect" href="consumer-priority.html">Consumer Priority</a>.</p></td></tr></tbody></table></div>
<h3 id="ConfiguringActiveMQCPP-OpenWire-onlyOptions"><strong>OpenWire-only Options</strong></h3>
<div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Option Name</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Default</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Description</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>consumer.browser</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>false</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>&#160;</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>consumer.networkSubscription</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>false</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>&#160;</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>consumer.optimizedAcknowledge</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>false</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p> Enables an optimised acknowledgement mode where messages are acknowledged in batches rather than individually. Alternatively, you could use Session.DUPS_OK_ACKNOWLEDGE acknowledgement mode for the consumers which can often be faster. <strong>WARNING</strong> enabling this issue could cause some issues with auto-acknowledgement on reconnection</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>consumer.noRangeAcks</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>false</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>&#160;</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>consumer.retroactive</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>false</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Sets whether or not retroactive consumers are enabled. Retroactive consumers allow non-durable topic subscribers to receive old messages that were published before the non-durable subscriber started.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p>producer.dispatchAsyc</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>false</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>&#160;</p></td></tr></tbody></table></div>
</div>