Author: buildbot Date: Wed Oct 25 17:24:18 2017 New Revision: 1020039 Log: Production update by buildbot for activemq
Modified: websites/production/activemq/content/cache/main.pageCache websites/production/activemq/content/per-destination-policies.html Modified: websites/production/activemq/content/cache/main.pageCache ============================================================================== Binary files - no diff available. Modified: websites/production/activemq/content/per-destination-policies.html ============================================================================== --- websites/production/activemq/content/per-destination-policies.html (original) +++ websites/production/activemq/content/per-destination-policies.html Wed Oct 25 17:24:18 2017 @@ -32,6 +32,15 @@ </style> <![endif]--> + <link href='http://activemq.apache.org/styles/highlighter/styles/shCore.css' rel='stylesheet' type='text/css' /> + <link href='http://activemq.apache.org/styles/highlighter/styles/shThemeEclipse.css' rel='stylesheet' type='text/css' /> + <script src='http://activemq.apache.org/styles/highlighter/scripts/shCore.js' type='text/javascript'></script> + <script src='http://activemq.apache.org/styles/highlighter/scripts/shBrushXml.js' type='text/javascript'></script> + + <script type="text/javascript"> + SyntaxHighlighter.defaults['toolbar'] = false; + SyntaxHighlighter.all(); + </script> <title> Apache ActiveMQ ™ -- Per Destination Policies @@ -71,7 +80,62 @@ <tbody> <tr> <td valign="top" width="100%"> -<div class="wiki-content maincontent"><p>We support a number of different policies which can be attached to individual destinations (queues, topics) or to wildcards of queue/topic hierarchies. This makes it easy to configure how different regions of the JMS destination space are handled.</p><p>The properties you can set on a Destination are as follows:</p><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Common Property</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Default Value</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Description</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>advisoryForConsumed</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Send an advisory message when a message is consumed by a client.</p></td></tr><tr><td colspan="1" rowspan="1" class="c onfluenceTd"><p><code>advisoryForDelivery</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Send an advisory message when a message is sent to a client.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>advisoryForFastProducers</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Send an advisory message if a producer is deemed fast.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>advisoryForSlowConsumers</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Send an advisory message if a consumer is deemed slow.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>advisoryWhenFull</code></p></td><td colspan="1" rowspan="1" class="conf luenceTd"><p><code>false</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Send an advisory message when a limit (memory, store, temp disk) is full.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>enableAudit</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>true</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>When <strong><code>true</code></strong> the broker will track duplicate messages. Duplicates can happen for non-persistent messages during failover.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>gcInactiveDestinations</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Garbage collect inactive destinations.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>inactiveTimoutBeforeGC</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"> <p><code>5000</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The timeout (in ms) after which a destination is considered inactive.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>includeBodyForAdvisory</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Includes the body of the original message that triggered the advisory as part of the <strong><code>dataStructure</code></strong> field in the advisory message (where applicable). Normally the message body is cleared.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>maxBrowsePageSize</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>400</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The maximum number of messages to page in from the store at one time for a browser.</p></td></tr><tr><td colspan="1" rowspan="1" class="conflue nceTd"><p><code>maxDestinations</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>-1</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>(v5.12) If <strong><code>0</code></strong> or greater, sets the maximum number of destinations that can be created. This parameter is intended to limit the number of hierarchical destinations that can be created under a wildcard destination.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>maxPageSize</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>200</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The maximum number of messages to page in from the store at one time. Increase this value to improve performance for queue destination's that contain grouped messages that are consumed by multiple concurrent consumers.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>memoryLimit</code></p></td><td colspan="1" rowspan ="1" class="confluenceTd"><p><code>n/a</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The memory limit (in bytes) of the destination's cursor.</p><p>This memory limit is subordinate to the system level memory limit, as specified by the <a shape="rect" href="producer-flow-control.html"><code><systemUsage>/<memoryUsage></code></a> <span class="confluence-link">attribute</span>. There is no default for this value; it simply acts as a child to the overall broker memory until the broker memory is exhausted.</p><p><strong>Note</strong>: when this limit is specified the destination's <strong><code>cursorMemoryHighWaterMark</code></strong> will be applied against it and not the <strong><code><systemUsage>/><memoryUsage></code></strong> memory limit.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>minimumMessageSize</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>1024</code></p>< /td><td colspan="1" rowspan="1" class="confluenceTd"><p>For non-serialized messages (embedded broker) - the assumed size of the message used for memory usage calculation. Serialized messages use the serialized size as the basis for the memory calculation.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>prioritizedMessages</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Persist message priority information.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>producerFlowControl</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>true</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>If <strong><code>true</code></strong> the broker will throttle (flow-control) the producer. Throttling is achieved either by withholding the producer's ACK or by raising a <strong><code>javax.jms.ResourceAllocationExc eption</code></strong> (that's propagated back to the client) when local resources e.g., memory and/or storage, have been exhausted.</p><p>If <strong><code>false</code></strong> excess messages will be written to the message store to prevent memory exhaustion. However, when the message store reaches capacity the producer will be throttled until resources are freed.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>slowConsumerStrategy</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Sets the strategy for handling slow consumers. See <a shape="rect" class="external-link" href="https://github.com/apache/activemq/blob/master/activemq-broker/src/main/java/org/apache/activemq/broker/region/policy/AbortSlowConsumerStrategy.java" rel="nofollow">AbortSlowConsumerStrategy.</a></p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>storeUsageHighWat erMark</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>100</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The percentage (%) threshold of the <strong><code><systemUsage>/<storeUsage></code></strong> store limit which when exceeded causes a send to block.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>useCache</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>true</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>If <strong><code>true</code></strong> persistent messages are cached for fast retrieval from store.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><span><code>usePrefetchExtension</code><br clear="none"></span></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>true</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The prefetch extension is used when a message is delivered but not ACK 'ed, such that the broker can dispatch another message, e.g., <code>prefetch == 0</code>, the idea being that there will always be prefetch number of messages pending. It also allows a transaction batch to exceed the prefetch value.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><code><span style="color: rgb(0,0,0);">sendFailIfNoSpace </span></code></td><td colspan="1" rowspan="1" class="confluenceTd"><code><span style="color: rgb(0,0,0);">false</span></code></td><td colspan="1" rowspan="1" class="confluenceTd"><span style="color: rgb(0,0,0);">(v5.16.0) If true, will cause a send to fail with a javax.jms.ResourceAllocationException when the destination has reached is resource limits (memory or storage)</span></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><code><span style="color: rgb(0,0,0);">sendFailIfNoSpaceAfterTimeout</span></code></td><td colspan="1" rowspan="1" class="confluenceTd"><code>0</code></td><td colspan="1" rowspan="1" clas s="confluenceTd"><span style="color: rgb(0,0,0);">(v5.16.0) if > 0, will cause a send to fail with a javax.jms.ResourceAllocationException when the destination resource limits (memory or storage) remain exhausted for the configured duration in milliseconds</span></td></tr></tbody></table></div><p>Additional properties for a Queue</p><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Queue Only Property</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Default Value</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Description</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>allConsumersExclusiveByDefault</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>When <strong><code>true</code></strong> all consumers will be exclusive. See <a shape="rect" href="nms/activemq-exclus ive-consumers.html">ActiveMQ Exclusive Consumers</a></p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>cursorMemoryHighWaterMark</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>70</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The percentage (%) threshold applied either to the <strong><code><systemUsage>/<memoryUsage></code></strong> or the destination's <strong><code>memoryLimit</code></strong> (when defined) which when exceeded will cause the destination's cursor to either block or write to disk.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>consumersBeforeDispatchStarts</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>0</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>When the first consumer connects, wait for specified number of consumers before message dispatching starts.</p></td></tr><tr><td colspan="1" rowspan="1" c lass="confluenceTd"><p><code>expireMessagesPeriod</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>30000</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The period (in ms) of checks for message expiry on queued messages, value of 0 disables.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>lazyDispatch</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Only page in from store the number of messages that can be dispatched at time.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><pre>maxExpirePageSize</pre></td><td colspan="1" rowspan="1" class="confluenceTd"><pre>400</pre></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The maximum number of messages to page in when periodically expiring messages.</p><p>Messages are paged in according to this setting if the number of messages in memory pending dis patch is less than this value, and there are messages in the store to page in. Messages are expired during this paging step as they are brought into memory from the store.</p><p>Once the paging process is completed, messages are expired from the list of those that are in memory and pending dispatch, then from the list of those that are in memory but not yet targeted at a subscription.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>optimizedDispatch</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Don't use a separate thread for dispatching from a Queue.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>persistJMSRedelivered</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>(v 5.10) If true, before a persistent message is dispatched by the br oker for the first time, the message is rewritten to reflect the possible delivery.</p><p>This ensures the message <strong><code>JMSRedelivered</code></strong> header is a reliable indication of possible duplicate delivery.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>queuePrefetch</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>n/a</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Sets the prefetch for consumers that are using the default value.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>strictOrderDispatch</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>If <strong><code>true</code></strong> queue will not round robin consumers, but it'll use a single one until its prefetch buffer is full.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>timeBefore DispatchStarts</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>0</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>When the first consumer connects, wait for specified time (in ms) before message dispatching starts.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>useConsumerPriority</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>true</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Use the priority of a consumer when dispatching messages from a Queue.</p></td></tr></tbody></table></div><p>Additional properties for a Topic</p><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Topic Only Property</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Default Value</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Description</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p> <code>advisoryForDiscardingMessages</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Send an advisory when a message is discarded from a non durable subscription.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>cursorMemoryHighWaterMark</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>70</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The percentage (%) threshold applied to the <strong><code><systemUsage>/<memoryUsage></code></strong> which when exceeded will cause the destination's cursor to either block or write to disk.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><span style="color: rgb(0,0,0);"><code>alwaysRetroactive</code><br clear="none"></span></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td colspan="1" rowspan="1" class="confl uenceTd"><p>Makes all subscribers retroactive negating the need to modify the clients to enable this feature.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>durableTopicPrefetch</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>n/a</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Sets the prefetch for durable topic consumers that are using the default value.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><span style="color: rgb(0,0,0);"><code>expireMessagesPeriod</code><br clear="none"></span></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>30000</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The interval (in ms) between message expiration checks on inactive durable subscribers.</p><p><strong>Note</strong>: set to <strong><code>0</code></strong> to disable message expiration checking.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><co de>topicPrefetch</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>n/a</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Sets the prefetch for topic consumers that are using the default value.</p></td></tr></tbody></table></div><p><span style="line-height: 1.4285715;">The following are examples of different policies that can be customized on a per destination basis:</span></p><ul><li><a shape="rect" href="dispatch-policies.html">Dispatch Policies</a></li></ul><pre> </pre><p>An example from the demos <a shape="rect" class="external-link" href="https://git-wip-us.apache.org/repos/asf?p=activemq.git;a=blob;f=assembly/src/release/examples/conf/activemq-demo.xml;hb=HEAD">https://git-wip-us.apache.org/repos/asf?p=activemq.git;a=blob;f=assembly/src/release/examples/conf/activemq-demo.xml;hb=HEAD</a>: </p><p><code class="xml plain"><</code><code class="xml keyword">beans</code> <code class="xml color1">xmlns</code><code class="xml pl ain">=</code><code class="xml string">"<a shape="rect" class="external-link" href="http://www.springframework.org/schema/beans" rel="nofollow">http://www.springframework.org/schema/beans</a>"</code></p><div class="line number2 index1 alt1"><code class="xml spaces">       </code><code class="xml color1">xmlns:amq</code><code class="xml plain">=</code><code class="xml string">"<a shape="rect" class="external-link" href="http://activemq.apache.org/schema/core">http://activemq.apache.org/schema/core</a>"</code></div><div class="line number3 index2 alt2"><code class="xml spaces">       </code><code class="xml color1">xmlns:xsi</code><code class="xml plain">=</code><code class="xml string">"<a shape="rect" class="external-link" href="http://www.w3.org/2001/XMLSchema-instance" rel="nofollow">http://www.w3.org/2001/XMLSchema-instance</a>"</code></div><div class="line number4 index3 alt1"><code class="xml spaces">  60;     </code><code class="xml plain">xsi:schemaLocation="<a shape="rect" class="external-link" href="http://www.springframework.org/schema/beans" rel="nofollow">http://www.springframework.org/schema/beans</a> <a shape="rect" class="external-link" href="http://www.springframework.org/schema/beans/spring-beans-2.0.xsd" rel="nofollow">http://www.springframework.org/schema/beans/spring-beans-2.0.xsd</a></code></div><div class="line number5 index4 alt2"><code class="xml spaces">                           </code><code class="xml plain"><a shape="rect" class="external-link" href="http://activemq.apache.org/schema/core">http://activemq.apache.org/schema/core</a> <a shape="rect" class="external-link" href="http://activemq.apache.org/schema/core/activemq-core.xsd">http://activemq.apache.org/schema/core/activemq-core.xsd</a>"></cod e></div><div class="line number6 index5 alt1"> </div><div class="line number7 index6 alt2"><code class="xml spaces">  </code><code class="xml plain"><</code><code class="xml keyword">bean</code> <code class="xml color1">class</code><code class="xml plain">=</code><code class="xml string">"org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"</code><code class="xml plain">/></code></div><div class="line number8 index7 alt1"> </div><div class="line number9 index8 alt2"><code class="xml spaces">  </code><code class="xml plain"><</code><code class="xml keyword">broker</code> <code class="xml color1">persistent</code><code class="xml plain">=</code><code class="xml string">"false"</code> <code class="xml color1">brokerName</code><code class="xml plain">=</code><code class="xml string">"${brokername}"</code> <code class="xml color1">xmlns</code><code class="xml plain">=</code><code class="xml string">"<a shape="rect" class="external -link" href="http://activemq.apache.org/schema/core">http://activemq.apache.org/schema/core</a>"</code><code class="xml plain">></code></div><div class="line number10 index9 alt1"><code class="xml spaces">    </code><code class="xml comments"><!--  lets define the dispatch policy --></code></div><div class="line number11 index10 alt2"><code class="xml spaces">    </code><code class="xml plain"><</code><code class="xml keyword">destinationPolicy</code><code class="xml plain">></code></div><div class="line number12 index11 alt1"><code class="xml spaces">      </code><code class="xml plain"><</code><code class="xml keyword">policyMap</code><code class="xml plain">></code></div><div class="line number13 index12 alt2"><code class="xml spaces">        </code><code class="xml plain"><</code><code class="xml keyword">policyEntries</code><code class="xml plain">></code></div><div class="line number14 index13 alt1"><code class="xml spaces">          </code><code class="xml plain"><</code><code class="xml keyword">policyEntry</code> <code class="xml plain">topic="FOO.>"></code></div><div class="line number15 index14 alt2"><code class="xml spaces">            </code><code class="xml plain"><</code><code class="xml keyword">dispatchPolicy</code><code class="xml plain">></code></div><div class="line number16 index15 alt1"><code class="xml spaces">              </code><code class="xml plain"><</code><code class="xml keyword">roundRobinDispatchPolicy</code> <code class="xml plain">/></code></div><div class="line number17 index16 alt2"><code class="xml spaces">            </code><c ode class="xml plain"></</code><code class="xml keyword">dispatchPolicy</code><code class="xml plain">></code></div><div class="line number18 index17 alt1"><code class="xml spaces">            </code><code class="xml plain"><</code><code class="xml keyword">subscriptionRecoveryPolicy</code><code class="xml plain">></code></div><div class="line number19 index18 alt2"><code class="xml spaces">              </code><code class="xml plain"><</code><code class="xml keyword">lastImageSubscriptionRecoveryPolicy</code> <code class="xml plain">/></code></div><div class="line number20 index19 alt1"><code class="xml spaces">            </code><code class="xml plain"></</code><code class="xml keyword">subscriptionRecoveryPolicy</code><code class="xml plain">></code></div><div class="li ne number21 index20 alt2"><code class="xml spaces">          </code><code class="xml plain"></</code><code class="xml keyword">policyEntry</code><code class="xml plain">></code></div><div class="line number22 index21 alt1"><code class="xml spaces">          </code> </div><div class="line number23 index22 alt2"><code class="xml spaces">          </code><code class="xml plain"><</code><code class="xml keyword">policyEntry</code> <code class="xml plain">topic="ORDERS.>"></code></div><div class="line number24 index23 alt1"><code class="xml spaces">            </code><code class="xml plain"><</code><code class="xml keyword">dispatchPolicy</code><code class="xml plain">></code></div><div class="line number25 index24 alt2"><code class="xml spaces">  0;            </code><code class="xml plain"><</code><code class="xml keyword">strictOrderDispatchPolicy</code> <code class="xml plain">/></code></div><div class="line number26 index25 alt1"><code class="xml spaces">            </code><code class="xml plain"></</code><code class="xml keyword">dispatchPolicy</code><code class="xml plain">></code></div><div class="line number27 index26 alt2"> </div><div class="line number28 index27 alt1"><code class="xml spaces">            </code><code class="xml comments"><!--  1 minute's worth --></code></div><div class="line number29 index28 alt2"><code class="xml spaces">            </code><code class="xml plain"><</code><code class="xml keyword">subscriptionRecoveryPolicy</code>< code class="xml plain">></code></div><div class="line number30 index29 alt1"><code class="xml spaces">              </code><code class="xml plain"><</code><code class="xml keyword">timedSubscriptionRecoveryPolicy</code> <code class="xml color1">recoverDuration</code><code class="xml plain">=</code><code class="xml string">"60000"</code> <code class="xml plain">/></code></div><div class="line number31 index30 alt2"><code class="xml spaces">            </code><code class="xml plain"></</code><code class="xml keyword">subscriptionRecoveryPolicy</code><code class="xml plain">></code></div><div class="line number32 index31 alt1"><code class="xml spaces">          </code><code class="xml plain"></</code><code class="xml keyword">policyEntry</code><code class="xml plain">></code></div><div cl ass="line number33 index32 alt2"><code class="xml spaces">    </code> </div><div class="line number34 index33 alt1"><code class="xml spaces">          </code><code class="xml plain"><</code><code class="xml keyword">policyEntry</code> <code class="xml plain">topic="PRICES.>"></code></div><div class="line number35 index34 alt2"><code class="xml spaces">            </code><code class="xml comments"><!-- lets force old messages to be discarded for slow consumers --></code></div><div class="line number36 index35 alt1"><code class="xml spaces">            </code><code class="xml plain"><</code><code class="xml keyword">pendingMessageLimitStrategy</code><code class="xml plain">></code></div><div class="line number37 index36 alt2"><code class="xml spaces">    0;          </code><code class="xml plain"><</code><code class="xml keyword">constantPendingMessageLimitStrategy</code> <code class="xml color1">limit</code><code class="xml plain">=</code><code class="xml string">"10"</code><code class="xml plain">/></code></div><div class="line number38 index37 alt1"><code class="xml spaces">            </code><code class="xml plain"></</code><code class="xml keyword">pendingMessageLimitStrategy</code><code class="xml plain">></code></div><div class="line number39 index38 alt2"> </div><div class="line number40 index39 alt1"><code class="xml spaces">            </code><code class="xml comments"><!--  10 seconds worth --></code></div><div class="line number41 index40 alt2"><code class="xml spaces">          0;  </code><code class="xml plain"><</code><code class="xml keyword">subscriptionRecoveryPolicy</code><code class="xml plain">></code></div><div class="line number42 index41 alt1"><code class="xml spaces">              </code><code class="xml plain"><</code><code class="xml keyword">timedSubscriptionRecoveryPolicy</code> <code class="xml color1">recoverDuration</code><code class="xml plain">=</code><code class="xml string">"10000"</code> <code class="xml plain">/></code></div><div class="line number43 index42 alt2"><code class="xml spaces">            </code><code class="xml plain"></</code><code class="xml keyword">subscriptionRecoveryPolicy</code><code class="xml plain">></code></div><div class="line number44 index43 alt1"><code class="xml spaces">            </code>  </div><div class="line number45 index44 alt2"><code class="xml spaces">          </code><code class="xml plain"></</code><code class="xml keyword">policyEntry</code><code class="xml plain">></code></div><div class="line number46 index45 alt1"><code class="xml spaces">          </code><code class="xml plain"><</code><code class="xml keyword">policyEntry</code> <code class="xml color1">tempTopic</code><code class="xml plain">=</code><code class="xml string">"true"</code> <code class="xml color1">advisoryForConsumed</code><code class="xml plain">=</code><code class="xml string">"true"</code> <code class="xml plain">/></code></div><div class="line number47 index46 alt2"><code class="xml spaces">          </code><code class="xml plain"><</code><code class="xml keyword">policyEntry</code> <code class="xml color1">tempQue ue</code><code class="xml plain">=</code><code class="xml string">"true"</code> <code class="xml color1">advisoryForConsumed</code><code class="xml plain">=</code><code class="xml string">"true"</code> <code class="xml plain">/></code></div><div class="line number48 index47 alt1"><code class="xml spaces">        </code><code class="xml plain"></</code><code class="xml keyword">policyEntries</code><code class="xml plain">></code></div><div class="line number49 index48 alt2"><code class="xml spaces">      </code><code class="xml plain"></</code><code class="xml keyword">policyMap</code><code class="xml plain">></code></div><div class="line number50 index49 alt1"><code class="xml spaces">    </code><code class="xml plain"></</code><code class="xml keyword">destinationPolicy</code><code class="xml plain">></code></div><div class="line number51 index50 alt2"><code class="xml spa ces">  </code><code class="xml plain"></</code><code class="xml keyword">broker</code><code class="xml plain">></code></div><div class="line number52 index51 alt1"><code class="xml plain"></</code><code class="xml keyword">beans</code><code class="xml plain">></code></div></div> +<div class="wiki-content maincontent"><p>Multiple different policies can be applied per destination (queue or topic), or using wildcard notation to apply to a hierarchy of queues or topics, making it possible, therefore, to configure how different regions of the JMS destination space are handled.</p><p>The following properties can be applied to either topics and/or queues:</p><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Common Property</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><code>advisoryForConsumed</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Send an advisory message when a message is consumed by a client.</p></td></tr><tr><td colspan="1" rowsp an="1" class="confluenceTd"><p><code>advisoryForDelivery</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Send an advisory message when a message is sent to a client.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>advisoryForFastProducers</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Send an advisory message if a producer is deemed fast.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>advisoryForSlowConsumers</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Send an advisory message if a consumer is deemed slow.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>advisoryWhenFull</code></p></td><td colspan="1" rowspan= "1" class="confluenceTd"><p><code>false</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Send an advisory message when a limit (memory, store, temp disk) is full.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>enableAudit</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>true</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>When <strong><code>true</code></strong> the broker will track duplicate messages. Duplicates can happen for non-persistent messages during failover.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>gcInactiveDestinations</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Garbage collect inactive destinations.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>inactiveTimoutBeforeGC</code></p></td><td colspan="1" rowspan="1" class= "confluenceTd"><p><code>5000</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The timeout (in ms) after which a destination is considered inactive.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>includeBodyForAdvisory</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Includes the body of the original message that triggered the advisory as part of the <strong><code>dataStructure</code></strong> field in the advisory message (where applicable). Normally the message body is cleared.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>maxBrowsePageSize</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>400</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The maximum number of messages to page in from the store at one time for a browser.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>maxDestinations</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>-1</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>(v5.12) If <strong><code>0</code></strong> or greater, sets the maximum number of destinations that can be created. This parameter is intended to limit the number of hierarchical destinations that can be created under a wildcard destination.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>maxPageSize</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>200</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The maximum number of messages to page in from the store at one time. Increase this value to improve performance for queue destination's that contain grouped messages that are consumed by multiple concurrent consumers.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>memoryLimit</code></p></td><td cols pan="1" rowspan="1" class="confluenceTd"><p><code>n/a</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The memory limit (in bytes) of the destination's cursor.</p><p>This memory limit is subordinate to the system level memory limit, as specified by the <a shape="rect" href="producer-flow-control.html"><code><systemUsage>/<memoryUsage></code></a> <span class="confluence-link">attribute</span>. There is no default for this value; it simply acts as a child to the overall broker memory until the broker memory is exhausted.</p><p><strong>Note</strong>: when this limit is specified the destination's <strong><code>cursorMemoryHighWaterMark</code></strong> will be applied against it and not the <strong><code><systemUsage>/><memoryUsage></code></strong> memory limit.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>minimumMessageSize</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>1 024</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>For non-serialized messages (embedded broker) - the assumed size of the message used for memory usage calculation. Serialized messages use the serialized size as the basis for the memory calculation.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>prioritizedMessages</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Persist message priority information.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>producerFlowControl</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>true</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>If <strong><code>true</code></strong> the broker will throttle (flow-control) the producer. Throttling is achieved either by withholding the producer's ACK or by raising a <strong><code>javax.jms.Resour ceAllocationException</code></strong> (that's propagated back to the client) when local resources, e.g., memory and/or storage, have been exhausted.</p><p>If <strong><code>false</code></strong> excess messages will be written to the message store to prevent memory exhaustion. However, when the message store reaches capacity the producer will be throttled until resources are freed.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>slowConsumerStrategy</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>null</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Sets the strategy for handling slow consumers. See <a shape="rect" class="external-link" href="https://github.com/apache/activemq/blob/master/activemq-broker/src/main/java/org/apache/activemq/broker/region/policy/AbortSlowConsumerStrategy.java" rel="nofollow">AbortSlowConsumerStrategy.</a></p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>s toreUsageHighWaterMark</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>100</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The percentage (%) threshold of the <strong><code><systemUsage>/<storeUsage></code></strong> store limit which when exceeded causes a send to block.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>useCache</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>true</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>If <strong><code>true</code></strong> persistent messages are cached for fast retrieval from store.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><span><code>usePrefetchExtension</code><br clear="none"></span></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>true</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The prefetch extension is used when a message is deliv ered but not ACK'ed, such that the broker can dispatch another message, e.g., <strong><code>prefetch == 0</code></strong>, the idea being that there will always be prefetch number of messages pending. It also allows a transaction batch to exceed the prefetch value.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code><span style="color: rgb(0,0,0);">sendFailIfNoSpace </span></code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code><span style="color: rgb(0,0,0);">false</span></code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><span style="color: rgb(0,0,0);">(v5.16.0) If <strong><code>true</code></strong>, will cause a send to fail with a <strong><code>javax.jms.ResourceAllocationException</code></strong> when the destination has reached is resource limits (memory or storage)</span></p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code><span style="color: rgb(0,0,0);">sendFailIfNoSpaceAfterTime out</span></code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>0</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><span style="color: rgb(0,0,0);">(v5.16.0) If <strong><code>> 0</code></strong>, will cause a send to fail with a <span style="color: rgb(0,0,0);"><strong><code>javax.jms.ResourceAllocationException</code></strong></span> when the destination resource limits (memory or storage) remain exhausted for the configured duration in milliseconds</span></p></td></tr></tbody></table></div><p>The following properties can be applied <em>only</em> to a queue:</p><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Queue Only Property</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><code>allConsumersExclusiveByD efault</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>When <strong><code>true</code></strong> all consumers will be exclusive. See <a shape="rect" href="nms/activemq-exclusive-consumers.html">ActiveMQ Exclusive Consumers</a></p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>cursorMemoryHighWaterMark</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>70</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The percentage (%) threshold applied either to the <strong><code><systemUsage>/<memoryUsage></code></strong> or the destination's <strong><code>memoryLimit</code></strong> (when defined) which when exceeded will cause the destination's cursor to either block or write to disk.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>consumersBeforeDispatchStarts</code></p></td><td c olspan="1" rowspan="1" class="confluenceTd"><p><code>0</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>When the first consumer connects, wait for specified number of consumers before message dispatching starts.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>expireMessagesPeriod</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>30000</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The period (in ms) of checks for message expiry on queued messages, value of 0 disables.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>lazyDispatch</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Only page in from store the number of messages that can be dispatched at time.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>maxExpirePageSize</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>400</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The maximum number of messages to page in when periodically expiring messages.</p><p>Messages are paged in according to this setting if the number of messages in memory pending dispatch is less than this value, and there are messages in the store to page in. Messages are expired during this paging step as they are brought into memory from the store.</p><p>Once the paging process is completed, messages are expired from the list of those that are in memory and pending dispatch, then from the list of those that are in memory but not yet targeted at a subscription.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>optimizedDispatch</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Don't use a separate thread for dispatching from a Queue.</p></td></tr><tr>< td colspan="1" rowspan="1" class="confluenceTd"><p><code>persistJMSRedelivered</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>(v 5.10) If true, before a persistent message is dispatched by the broker for the first time, the message is rewritten to reflect the possible delivery.</p><p>This ensures the message <strong><code>JMSRedelivered</code></strong> header is a reliable indication of possible duplicate delivery.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>queuePrefetch</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>n/a</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Sets the prefetch for consumers that are using the default value.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>strictOrderDispatch</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>false</ code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>If <strong><code>true</code></strong> queue will not round robin consumers, but it'll use a single one until its prefetch buffer is full.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>timeBeforeDispatchStarts</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>0</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>When the first consumer connects, wait for specified time (in ms) before message dispatching starts.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>useConsumerPriority</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>true</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Use the priority of a consumer when dispatching messages from a Queue.</p></td></tr></tbody></table></div><p>The following properties can be applied <em>only</em> to a topic:</p><div class="table-wrap "><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Topic Only Property</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><code>advisoryForDiscardingMessages</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Send an advisory when a message is discarded from a non durable subscription.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>cursorMemoryHighWaterMark</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>70</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>The percentage (%) threshold applied to the <strong><code><systemUsage>/<memoryUsage></code></strong> which when exceeded will cause the destination's cursor to either block or write to disk.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><span style="color: rgb(0,0,0);"><code>alwaysRetroactive</code><br clear="none"></span></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>false</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Makes all subscribers retroactive negating the need to modify the clients to enable this feature.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>durableTopicPrefetch</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>n/a</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Sets the prefetch for durable topic consumers that are using the default value.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><span style="color: rgb(0,0,0);"><code>expireMessagesPeriod</code><br clear="none"></span></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>30000</code></p> </td><td colspan="1" rowspan="1" class="confluenceTd"><p>The interval (in ms) between message expiration checks on inactive durable subscribers.</p><p><strong>Note</strong>: set to <strong><code>0</code></strong> to disable message expiration checking.</p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>topicPrefetch</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>n/a</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Sets the prefetch for topic consumers that are using the default value.</p></td></tr></tbody></table></div><p><span style="line-height: 1.4285715;">The following are examples of different policies that can be customized on a per destination basis:</span></p><ul><li><a shape="rect" href="dispatch-policies.html">Dispatch Policies</a></li></ul><p>An example from the demos <a shape="rect" class="external-link" href="https://git-wip-us.apache.org/repos/asf?p=activemq.git;a=blob;f=assembly/src/release/examp les/conf/activemq-demo.xml;hb=HEAD">https://git-wip-us.apache.org/repos/asf?p=activemq.git;a=blob;f=assembly/src/release/examples/conf/activemq-demo.xml;hb=HEAD</a>: </p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl"> +<pre class="brush: xml; gutter: false; theme: Default" style="font-size:12px;"><beans xmlns="http://www.springframework.org/schema/beans" + xmlns:amq="http://activemq.apache.org/schema/core" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd + http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core.xsd"> + + <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"/> + + <broker persistent="false" + brokerName="${brokername}" + xmlns="http://activemq.apache.org/schema/core"> + + <destinationPolicy> + <policyMap> + <policyEntries> + <policyEntry topic="FOO.>"> + <dispatchPolicy> + <roundRobinDispatchPolicy/> + </dispatchPolicy> + <subscriptionRecoveryPolicy> + <lastImageSubscriptionRecoveryPolicy/> + </subscriptionRecoveryPolicy> + </policyEntry> + + <policyEntry topic="ORDERS.>"> + <dispatchPolicy> + <strictOrderDispatchPolicy/> + </dispatchPolicy> + + <!-- Recover 1 minute's worth --> + <subscriptionRecoveryPolicy> + <timedSubscriptionRecoveryPolicy recoverDuration="60000"/> + </subscriptionRecoveryPolicy> + </policyEntry> + + <policyEntry topic="PRICES.>"> + <!-- Force pending messages to be discarded for slow consumers --> + <pendingMessageLimitStrategy> + <constantPendingMessageLimitStrategy limit="10"/> + </pendingMessageLimitStrategy> + + <!-- 10 seconds worth --> + <subscriptionRecoveryPolicy> + <timedSubscriptionRecoveryPolicy recoverDuration="10000"/> + </subscriptionRecoveryPolicy> + + </policyEntry> + <policyEntry tempTopic="true" advisoryForConsumed="true"/> + <policyEntry tempQueue="true" advisoryForConsumed="true"/> + </policyEntries> + </policyMap> + </destinationPolicy> + </broker> +</beans></pre> +</div></div><p> </p><p> </p></div> </td> <td valign="top"> <div class="navigation">