Modified: websites/production/activemq/content/advisory-message.html
==============================================================================
--- websites/production/activemq/content/advisory-message.html (original)
+++ websites/production/activemq/content/advisory-message.html Sat Jun 27
21:23:55 2015
@@ -32,15 +32,6 @@
</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/shBrushJava.js'
type='text/javascript'></script>
-
- <script type="text/javascript">
- SyntaxHighlighter.defaults['toolbar'] = false;
- SyntaxHighlighter.all();
- </script>
<title>
Apache ActiveMQ ™ -- Advisory Message
@@ -82,7 +73,7 @@
<tr>
<td valign="top" width="100%">
<div class="wiki-content maincontent"><p>ActiveMQ supports advisory messages
which allows you to watch the system using regular JMS messages. Currently we
have advisory messages that support</p><ul><li>consumers, producers and
connections starting and stopping</li><li>temporary destinations being created
and destroyed</li><li>messages expiring on topics and queues</li><li>brokers
sending messages to destinations with no consumers.</li><li>connections
starting and stopping</li></ul><p>Advisory messages can be thought as some kind
of administrative channel where you receive information regarding what is
happening on your JMS provider along with what's happening with producers,
consumers and destinations.</p><p>When you look at a broker via <a shape="rect"
href="jmx.html">JMX</a> you will see the advisory topics prefixed with
<strong>ActiveMQ.Advisory.</strong>.</p><p>Every Advisory has the message
<strong>type</strong> 'Advisory' and some predefined message
properties:</p><div class="
table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1"
rowspan="1" class="confluenceTh"><p>property name</p></th><th colspan="1"
rowspan="1" class="confluenceTh"><p>type</p></th><th colspan="1" rowspan="1"
class="confluenceTh"><p>description</p></th><th colspan="1" rowspan="1"
class="confluenceTh"><p>version</p></th></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>originBrokerId</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>StringProperty</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>the id of the broker where the advisory
originated</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>5.x</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>originBrokerName</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>StringProperty</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>the name of the broker where the advisory
originated</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>5.x<
/p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>originBrokerURL</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>StringProperty</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>the first URL of the broker where the advisory
originated</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>5.2</p></td></tr></tbody></table></div><p>In addition,
some messages carry a Command object - which carries more information for the
advisory - e.g.</p><p>A subscription to each of the destination returns an
ActiveMQMessage. Specific DataStructure objects (ie. ConsumerInfo,
ProducerInfo,ConnectionInfo) can be retrieve via getDataStructure method of
ActiveMQMessage.</p><p>For example:</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[...
+<script class="brush: java; gutter: false; theme: Default"
type="syntaxhighlighter"><![CDATA[...
Destination advisoryDestination =
AdvisorySupport.getProducerAdvisoryTopic(destination)
MessageConsumer consumer = session.createConsumer(advisoryDestination);
@@ -99,62 +90,34 @@ public void onMessage(Message msg){
}
}
]]></script>
-</div></div><h2
id="AdvisoryMessage-Thefollowingadvisorytopicsaresupported">The following
advisory topics are supported</h2><h3
id="AdvisoryMessage-Clientbasedadvisories">Client based advisories</h3> <div
class="aui-message success shadowed information-macro">
- <p class="title">Tip</p>
- <span class="aui-icon icon-success">Icon</span>
- <div class="message-content">
- <p>These are always generated</p>
- </div>
- </div>
-<div class="table-wrap"><table class="confluenceTable"><tbody><tr><th
colspan="1" rowspan="1" class="confluenceTh"><p>Advisory Topics</p></th><th
colspan="1" rowspan="1" class="confluenceTh"><p>Description</p></th><th
colspan="1" rowspan="1" class="confluenceTh"><p>properties</p></th><th
colspan="1" rowspan="1" class="confluenceTh"><p>Data
Structure</p></th></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>ActiveMQ.Advisory.Connection</p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>Connection start & stop
messages</p></td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"><p>ConnectionInfo, RemoveInfo</p></td></tr><tr><td
colspan="1" rowspan="1"
class="confluenceTd"><p>ActiveMQ.Advisory.Producer.Queue</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>Producer start & stop
messages on a Queue</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>String='producerCount' - the number
of producers</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>ProducerInfo</p></td></tr><tr><td colspan="1"
rowspan="1"
class="confluenceTd"><p>ActiveMQ.Advisory.Producer.Topic</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>Producer start & stop
messages on a Topic</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>String='producerCount' - the number of
producers</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>ProducerInfo</p></td></tr><tr><td colspan="1"
rowspan="1"
class="confluenceTd"><p>ActiveMQ.Advisory.Consumer.Queue</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>Consumer start & stop
messages on a Queue</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>String='consumerCount' - the number of
Consumers</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>ConsumerInfo, RemoveInfo</p></td></tr><tr><td
colspan="1" rowspan="1"
class="confluenceTd"><p>ActiveMQ.Advisory.Consumer.Topic</p></td><td cols
pan="1" rowspan="1" class="confluenceTd"><p>Consumer start & stop messages
on a Topic</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>String='consumerCount' - the number of
Consumers</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>ConsumerInfo,
RemoveInfo</p></td></tr></tbody></table></div><p>Note that the consumer
start/stop advisory messages also have a <strong>consumerCount</strong> header
to indicate the number of active consumers on the destination when the advisory
message was sent. This means you can use the following selector to be notified
when there are no active consumers on a given destination...</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[consumerCount = 0
+</div></div><h2
id="AdvisoryMessage-Thefollowingadvisorytopicsaresupported">The following
advisory topics are supported</h2><h3
id="AdvisoryMessage-Clientbasedadvisories">Client based advisories</h3><div
class="confluence-information-macro confluence-information-macro-tip"><p
class="title">Tip</p><span class="aui-icon aui-icon-small aui-iconfont-approve
confluence-information-macro-icon"></span><div
class="confluence-information-macro-body"><p>These are always
generated</p></div></div><div class="table-wrap"><table
class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1"
class="confluenceTh"><p>Advisory Topics</p></th><th colspan="1" rowspan="1"
class="confluenceTh"><p>Description</p></th><th colspan="1" rowspan="1"
class="confluenceTh"><p>properties</p></th><th colspan="1" rowspan="1"
class="confluenceTh"><p>Data Structure</p></th></tr><tr><td colspan="1"
rowspan="1" class="confluenceTd"><p>ActiveMQ.Advisory.Connection</p></td><td
colspan="1" rowspan="1" class="confluenceTd">
<p>Connection start & stop messages</p></td><td colspan="1" rowspan="1"
class="confluenceTd"> </td><td colspan="1" rowspan="1"
class="confluenceTd"><p>ConnectionInfo, RemoveInfo</p></td></tr><tr><td
colspan="1" rowspan="1"
class="confluenceTd"><p>ActiveMQ.Advisory.Producer.Queue</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>Producer start & stop
messages on a Queue</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>String='producerCount' - the number of
producers</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>ProducerInfo</p></td></tr><tr><td colspan="1"
rowspan="1"
class="confluenceTd"><p>ActiveMQ.Advisory.Producer.Topic</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>Producer start & stop
messages on a Topic</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>String='producerCount' - the number of
producers</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>ProducerInfo</p></td></tr><tr><td colspan="
1" rowspan="1"
class="confluenceTd"><p>ActiveMQ.Advisory.Consumer.Queue</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>Consumer start & stop
messages on a Queue</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>String='consumerCount' - the number of
Consumers</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>ConsumerInfo, RemoveInfo</p></td></tr><tr><td
colspan="1" rowspan="1"
class="confluenceTd"><p>ActiveMQ.Advisory.Consumer.Topic</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>Consumer start & stop
messages on a Topic</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>String='consumerCount' - the number of
Consumers</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>ConsumerInfo,
RemoveInfo</p></td></tr></tbody></table></div><p>Note that the consumer
start/stop advisory messages also have a <strong>consumerCount</strong> header
to indicate the number of active consumers on the destination when the advisory
mes
sage was sent. This means you can use the following selector to be notified
when there are no active consumers on a given destination...</p><div
class="code panel pdl" style="border-width: 1px;"><div class="codeContent
panelContent pdl">
+<script class="brush: java; gutter: false; theme: Default"
type="syntaxhighlighter"><![CDATA[consumerCount = 0
]]></script>
-</div></div><h3
id="AdvisoryMessage-DestinationandMessagebasedadvisories">Destination and
Message based advisories</h3><div class="table-wrap"><table
class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1"
class="confluenceTh"><p>Advisory Topics</p></th><th colspan="1" rowspan="1"
class="confluenceTh"><p>Description</p></th><td colspan="1" rowspan="1"
class="confluenceTd"><p>properties</p></td><th colspan="1" rowspan="1"
class="confluenceTh"><p>Data Structure</p></th><th colspan="1" rowspan="1"
class="confluenceTh"><p>default</p></th><th colspan="1" rowspan="1"
class="confluenceTh"><p>PolicyEntry property</p></th></tr><tr><td colspan="1"
rowspan="1" class="confluenceTd"><p>ActiveMQ.Advisory.Queue</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>Queue create &
destroy</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>null</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>DestinationInfo</p></td><td colspan="1" rowspan="1"
class="confluenceTd"
><p>true</p></td><td colspan="1" rowspan="1"
>class="confluenceTd"><p>none</p></td></tr><tr><td colspan="1" rowspan="1"
>class="confluenceTd"><p>ActiveMQ.Advisory.Topic</p></td><td colspan="1"
>rowspan="1" class="confluenceTd"><p>Topic create & destroy</p></td><td
>colspan="1" rowspan="1" class="confluenceTd"><p>null</p></td><td colspan="1"
>rowspan="1" class="confluenceTd">DestinationInfo</td><td colspan="1"
>rowspan="1" class="confluenceTd"><p>true</p></td><td colspan="1" rowspan="1"
>class="confluenceTd"><p>none</p></td></tr><tr><td colspan="1" rowspan="1"
>class="confluenceTd"><p>ActiveMQ.Advisory.TempQueue</p></td><td colspan="1"
>rowspan="1" class="confluenceTd"><p>Temporary Queue create &
>destroy</p></td><td colspan="1" rowspan="1"
>class="confluenceTd"><p>null</p></td><td colspan="1" rowspan="1"
>class="confluenceTd"><p>DestinationInfo</p></td><td colspan="1" rowspan="1"
>class="confluenceTd"><p>true</p></td><td colspan="1" rowspan="1"
>class="confluenceTd"><p>none</p></td></tr><
tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>ActiveMQ.Advisory.TempTopic</p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>Temporary Topic create &
destroy</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>null</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>DestinationInfo</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>true</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>none</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>ActiveMQ.Advisory.Expired.Queue</p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>Expired messages on a Queue</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>String='orignalMessageId' - the
expired id</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>Message</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>true</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>none</p></td></tr><tr><td colspan="1" rowspan="1"
class="conf
luenceTd"><p>ActiveMQ.Advisory.Expired.Topic</p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>Expired messages on a Topic</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>String='orignalMessageId' - the
expired id</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>Message</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>true</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>none</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>ActiveMQ.Advisory.NoConsumer.Queue</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>No consumer is available to
process messages being sent on a Queue</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>null</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>Message</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>false</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>sendAdvisoryIfNoConsumers</p></td></tr><tr><td
colspan="1" rowspan="1" cl
ass="confluenceTd"><p>ActiveMQ.Advisory.NoConsumer.Topic</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>No consumer is available to
process messages being sent on a Topic</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>null</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>Message</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>false</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>sendAdvisoryIfNoConsumers</p></td></tr></tbody></table></div>
<div class="aui-message success shadowed information-macro">
- <p class="title">Tip</p>
- <span class="aui-icon icon-success">Icon</span>
- <div class="message-content">
- <ul><li>NoConsumer topic advisories are sent only
for non-persistent messages</li></ul>
- </div>
- </div>
-<h3 id="AdvisoryMessage-Newadvisoriesinversion5.2">New advisories in version
5.2</h3><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th
colspan="1" rowspan="1" class="confluenceTh"><p>Advisory Topics</p></th><th
colspan="1" rowspan="1" class="confluenceTh"><p>Description</p></th><th
colspan="1" rowspan="1" class="confluenceTh"><p>properties</p></th><th
colspan="1" rowspan="1" class="confluenceTh"><p>Data Structure</p></th><th
colspan="1" rowspan="1" class="confluenceTh"><p>default</p></th><th colspan="1"
rowspan="1" class="confluenceTh"><p>PolicyEntry property</p></th></tr><tr><td
colspan="1" rowspan="1"
class="confluenceTd"><p>ActiveMQ.Advisory.SlowConsumer.Queue</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>Slow Queue Consumer</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>String='consumerId' - the
consumer id</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>ConsumerInfo</p></td><td colspan="1" rowspan="1"
class="confluenceT
d"><p>false</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>advisoryForSlowConsumers</p></td></tr><tr><td
colspan="1" rowspan="1"
class="confluenceTd"><p>ActiveMQ.Advisory.SlowConsumer.Topic</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>Slow Topic Consumer</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>String='consumerId' - the
consumer id</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>ConsumerInfo</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>false</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>advisoryForSlowConsumers</p></td></tr><tr><td
colspan="1" rowspan="1"
class="confluenceTd"><p>ActiveMQ.Advisory.FastProducer.Queue</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>Fast Queue producer</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>String='producerId' - the
producer id</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>ProducerInfo</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>false</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>advisdoryForFastProducers</p></td></tr><tr><td
colspan="1" rowspan="1" class="confluenceTd"><p>ActiveMQ.Advisory.
FastProducer.Topic</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>Fast Topic producer</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>String='consumerId' - the producer id</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>ProducerInfo</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>false</p></td><td colspan="1"
rowspan="1"
class="confluenceTd"><p>advisdoryForFastProducers</p></td></tr><tr><td
colspan="1" rowspan="1"
class="confluenceTd"><p>ActiveMQ.Advisory.MessageDiscarded.Queue</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>Message discarded</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>String='orignalMessageId' - the
discarded id</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>Message</p></td><
td colspan="1" rowspan="1" class="confluenceTd"><p>false</p></td><td
colspan="1" rowspan="1"
class="confluenceTd"><p>advisoryForDiscardingMessages</p></td></tr><tr><td
colspan="1" rowspan="1"
class="confluenceTd"><p>ActiveMQ.Advisory.MessageDiscarded.Topic</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>Message discarded</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>String='orignalMessageId' - the
discarded id</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>Message</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>false</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>advisoryForDiscardingMessages</p></td></tr><tr><td
colspan="1" rowspan="1"
class="confluenceTd"><p>ActiveMQ.Advisory.MessageDelivered.Queue</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>Message delivered to the
broker</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>String='orignalMessageId' - the delivered
id</p></td><td colspan="1" ro
wspan="1" class="confluenceTd"><p>Message</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>false</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>advisoryForDelivery</p></td></tr><tr><td colspan="1"
rowspan="1"
class="confluenceTd"><p>ActiveMQ.Advisory.MessageDelivered.Topic</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>Message delivered to the
broker</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>String='orignalMessageId' - the delivered
id</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>Message</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>false</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>advisoryForDelivery</p></td></tr><tr><td colspan="1"
rowspan="1"
class="confluenceTd"><p>ActiveMQ.Advisory.MessageConsumed.Queue</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>Message consumed by a
client</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>String='orignalMessageId' - th
e delivered id</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>Message</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>false</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>advisoryForConsumed</p></td></tr><tr><td colspan="1"
rowspan="1"
class="confluenceTd"><p>ActiveMQ.Advisory.MessageConsumed.Topic</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>Message consumed by a
client</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>String='orignalMessageId' - the delivered
id</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>Message</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>false</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>advisoryForConsumed</p></td></tr><tr><td colspan="1"
rowspan="1" class="confluenceTd"><p>ActiveMQ.Advisory.FULL</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>A Usage resource is at its
limit</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>String
='usageName' - the name of Usage resource</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>null</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>false</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>advisoryWhenFull</p></td></tr><tr><td colspan="1"
rowspan="1" class="confluenceTd"><p>ActiveMQ.Advisory.MasterBroker</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>A broker is now the master in a
master/slave configuration</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>null</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>null</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>true</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>none</p></td></tr></tbody></table></div><h3
id="AdvisoryMessage-NewAdvisoriesin5.4">New Advisories in 5.4</h3><div
class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1"
rowspan="1" class="confluenceTh"><p>Advisory Topics</p></th><th colspan="1"
rowsp
an="1" class="confluenceTh"><p>Description</p></th><th colspan="1" rowspan="1"
class="confluenceTh"><p>properties</p></th><th colspan="1" rowspan="1"
class="confluenceTh"><p>Data Structure</p></th><th colspan="1" rowspan="1"
class="confluenceTh"><p>default</p></th><th colspan="1" rowspan="1"
class="confluenceTh"><p>PolicyEntry property</p></th></tr><tr><td colspan="1"
rowspan="1"
class="confluenceTd"><p>ActiveMQ.Advisory.MessageDLQd.Queue</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>Message sent to DLQ</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>String='orignalMessageId' - the
delivered id</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>Message</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>Always on</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>advisoryForConsumed</p></td></tr><tr><td colspan="1"
rowspan="1"
class="confluenceTd"><p>ActiveMQ.Advisory.MessageDLQd.Topic</p></td><td
colspan="1" rowspan="1" class="con
fluenceTd"><p>Message sent to DLQ</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>String='orignalMessageId' - the delivered
id</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>Message</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>Always on</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>advisoryForConsumed</p></td></tr></tbody></table></div><h3
id="AdvisoryMessage-Networkbridgeadvisories">Network bridge
advisories</h3><p>Starting with ActiveMQ version 5.5 you can watch advisory
topics for events related to the status of network bridges. You can get
advisory messages when the network bridge is started or stopped.</p><div
class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1"
rowspan="1" class="confluenceTh"><p>Advisory Topics</p></th><th colspan="1"
rowspan="1" class="confluenceTh"><p>Description</p></th><th colspan="1"
rowspan="1" class="confluenceTh"><p>properties</p></th><th colspan="1"
rowspan="1" class="confl
uenceTh"><p>Data Structure</p></th><th colspan="1" rowspan="1"
class="confluenceTh"><p>default</p></th></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>ActiveMQ.Advisory.NetworkBridge</p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>Network bridge being stopped or
started</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>Boolean="started" - true if bridge is started, false if
it is stopped<br clear="none"> Boolean="createdByDuplex" - true if the bridge
is created by remote network connector</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>BrokerInfo - provides data of the remote
broker</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Always
on</p></td></tr></tbody></table></div><h3
id="AdvisoryMessage-Enablingadvisoriesnotturnedonbydefault">Enabling advisories
not turned on by default</h3><p>The advisories that are not turned on by
default (see the last column) can be enabled on a PolicyEntry in the ActiveMQ
Broker Configuration
- e.g. - to enable a message consumed advisory you can configure the
following:</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[<destinationPolicy>
+</div></div><h3
id="AdvisoryMessage-DestinationandMessagebasedadvisories">Destination and
Message based advisories</h3><div class="table-wrap"><table
class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1"
class="confluenceTh"><p>Advisory Topics</p></th><th colspan="1" rowspan="1"
class="confluenceTh"><p>Description</p></th><td colspan="1" rowspan="1"
class="confluenceTd"><p>properties</p></td><th colspan="1" rowspan="1"
class="confluenceTh"><p>Data Structure</p></th><th colspan="1" rowspan="1"
class="confluenceTh"><p>default</p></th><th colspan="1" rowspan="1"
class="confluenceTh"><p>PolicyEntry property</p></th></tr><tr><td colspan="1"
rowspan="1" class="confluenceTd"><p>ActiveMQ.Advisory.Queue</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>Queue create &
destroy</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>null</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>DestinationInfo</p></td><td colspan="1" rowspan="1"
class="confluenceTd"
><p>true</p></td><td colspan="1" rowspan="1"
>class="confluenceTd"><p>none</p></td></tr><tr><td colspan="1" rowspan="1"
>class="confluenceTd"><p>ActiveMQ.Advisory.Topic</p></td><td colspan="1"
>rowspan="1" class="confluenceTd"><p>Topic create & destroy</p></td><td
>colspan="1" rowspan="1" class="confluenceTd"><p>null</p></td><td colspan="1"
>rowspan="1" class="confluenceTd">DestinationInfo</td><td colspan="1"
>rowspan="1" class="confluenceTd"><p>true</p></td><td colspan="1" rowspan="1"
>class="confluenceTd"><p>none</p></td></tr><tr><td colspan="1" rowspan="1"
>class="confluenceTd"><p>ActiveMQ.Advisory.TempQueue</p></td><td colspan="1"
>rowspan="1" class="confluenceTd"><p>Temporary Queue create &
>destroy</p></td><td colspan="1" rowspan="1"
>class="confluenceTd"><p>null</p></td><td colspan="1" rowspan="1"
>class="confluenceTd"><p>DestinationInfo</p></td><td colspan="1" rowspan="1"
>class="confluenceTd"><p>true</p></td><td colspan="1" rowspan="1"
>class="confluenceTd"><p>none</p></td></tr><
tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>ActiveMQ.Advisory.TempTopic</p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>Temporary Topic create &
destroy</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>null</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>DestinationInfo</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>true</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>none</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>ActiveMQ.Advisory.Expired.Queue</p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>Expired messages on a Queue</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>String='orignalMessageId' - the
expired id</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>Message</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>true</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>none</p></td></tr><tr><td colspan="1" rowspan="1"
class="conf
luenceTd"><p>ActiveMQ.Advisory.Expired.Topic</p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>Expired messages on a Topic</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>String='orignalMessageId' - the
expired id</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>Message</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>true</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>none</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>ActiveMQ.Advisory.NoConsumer.Queue</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>No consumer is available to
process messages being sent on a Queue</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>null</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>Message</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>false</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>sendAdvisoryIfNoConsumers</p></td></tr><tr><td
colspan="1" rowspan="1" cl
ass="confluenceTd"><p>ActiveMQ.Advisory.NoConsumer.Topic</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>No consumer is available to
process messages being sent on a Topic</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>null</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>Message</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>false</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>sendAdvisoryIfNoConsumers</p></td></tr></tbody></table></div><div
class="confluence-information-macro confluence-information-macro-tip"><p
class="title">Tip</p><span class="aui-icon aui-icon-small aui-iconfont-approve
confluence-information-macro-icon"></span><div
class="confluence-information-macro-body"><ul><li>NoConsumer topic advisories
are sent only for non-persistent messages</li></ul></div></div><h3
id="AdvisoryMessage-Newadvisoriesinversion5.2">New advisories in version
5.2</h3><div class="table-wrap"><table class="confluenceTable"><tbody><
tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Advisory
Topics</p></th><th colspan="1" rowspan="1"
class="confluenceTh"><p>Description</p></th><th colspan="1" rowspan="1"
class="confluenceTh"><p>properties</p></th><th colspan="1" rowspan="1"
class="confluenceTh"><p>Data Structure</p></th><th colspan="1" rowspan="1"
class="confluenceTh"><p>default</p></th><th colspan="1" rowspan="1"
class="confluenceTh"><p>PolicyEntry property</p></th></tr><tr><td colspan="1"
rowspan="1"
class="confluenceTd"><p>ActiveMQ.Advisory.SlowConsumer.Queue</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>Slow Queue Consumer</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>String='consumerId' - the
consumer id</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>ConsumerInfo</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>false</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>advisoryForSlowConsumers</p></td></tr><tr><td
colspan="1" rowspan="1" class=
"confluenceTd"><p>ActiveMQ.Advisory.SlowConsumer.Topic</p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>Slow Topic Consumer</p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>String='consumerId' - the consumer
id</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>ConsumerInfo</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>false</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>advisoryForSlowConsumers</p></td></tr><tr><td
colspan="1" rowspan="1"
class="confluenceTd"><p>ActiveMQ.Advisory.FastProducer.Queue</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>Fast Queue producer</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>String='producerId' - the
producer id</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>ProducerInfo</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>false</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>advisdoryForFastProducers</p></td></tr><tr><td
colspan="1
" rowspan="1" class="confluenceTd"><p>ActiveMQ.Advisory.
FastProducer.Topic</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>Fast Topic producer</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>String='consumerId' - the producer id</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>ProducerInfo</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>false</p></td><td colspan="1"
rowspan="1"
class="confluenceTd"><p>advisdoryForFastProducers</p></td></tr><tr><td
colspan="1" rowspan="1"
class="confluenceTd"><p>ActiveMQ.Advisory.MessageDiscarded.Queue</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>Message discarded</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>String='orignalMessageId' - the
discarded id</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>Message</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>false</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>advisoryForDiscardingMessages</
p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>ActiveMQ.Advisory.MessageDiscarded.Topic</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>Message discarded</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>String='orignalMessageId' - the
discarded id</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>Message</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>false</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>advisoryForDiscardingMessages</p></td></tr><tr><td
colspan="1" rowspan="1"
class="confluenceTd"><p>ActiveMQ.Advisory.MessageDelivered.Queue</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>Message delivered to the
broker</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>String='orignalMessageId' - the delivered
id</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>Message</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>false</p></td><td colspan="1" rowspan="1" clas
s="confluenceTd"><p>advisoryForDelivery</p></td></tr><tr><td colspan="1"
rowspan="1"
class="confluenceTd"><p>ActiveMQ.Advisory.MessageDelivered.Topic</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>Message delivered to the
broker</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>String='orignalMessageId' - the delivered
id</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>Message</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>false</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>advisoryForDelivery</p></td></tr><tr><td colspan="1"
rowspan="1"
class="confluenceTd"><p>ActiveMQ.Advisory.MessageConsumed.Queue</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>Message consumed by a
client</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>String='orignalMessageId' - the delivered
id</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>Message</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>false
</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>advisoryForConsumed</p></td></tr><tr><td colspan="1"
rowspan="1"
class="confluenceTd"><p>ActiveMQ.Advisory.MessageConsumed.Topic</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>Message consumed by a
client</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>String='orignalMessageId' - the delivered
id</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>Message</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>false</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>advisoryForConsumed</p></td></tr><tr><td colspan="1"
rowspan="1" class="confluenceTd"><p>ActiveMQ.Advisory.FULL</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>A Usage resource is at its
limit</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>String='usageName' - the name of Usage
resource</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>null</p></td><td colspan="1" rowspan="1" class
="confluenceTd"><p>false</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>advisoryWhenFull</p></td></tr><tr><td colspan="1"
rowspan="1" class="confluenceTd"><p>ActiveMQ.Advisory.MasterBroker</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>A broker is now the master in a
master/slave configuration</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>null</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>null</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>true</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>none</p></td></tr></tbody></table></div><h3
id="AdvisoryMessage-NewAdvisoriesin5.4">New Advisories in 5.4</h3><div
class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1"
rowspan="1" class="confluenceTh"><p>Advisory Topics</p></th><th colspan="1"
rowspan="1" class="confluenceTh"><p>Description</p></th><th colspan="1"
rowspan="1" class="confluenceTh"><p>properties</p></th><th colspan="1"
rowspan="1
" class="confluenceTh"><p>Data Structure</p></th><th colspan="1" rowspan="1"
class="confluenceTh"><p>default</p></th><th colspan="1" rowspan="1"
class="confluenceTh"><p>PolicyEntry property</p></th></tr><tr><td colspan="1"
rowspan="1"
class="confluenceTd"><p>ActiveMQ.Advisory.MessageDLQd.Queue</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>Message sent to DLQ</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>String='orignalMessageId' - the
delivered id</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>Message</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>Always on</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>advisoryForConsumed</p></td></tr><tr><td colspan="1"
rowspan="1"
class="confluenceTd"><p>ActiveMQ.Advisory.MessageDLQd.Topic</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>Message sent to DLQ</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>String='orignalMessageId' - the
delivered id</p></td><
td colspan="1" rowspan="1" class="confluenceTd"><p>Message</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>Always on</p></td><td
colspan="1" rowspan="1"
class="confluenceTd"><p>advisoryForConsumed</p></td></tr></tbody></table></div><h3
id="AdvisoryMessage-Networkbridgeadvisories">Network bridge
advisories</h3><p>Starting with ActiveMQ version 5.5 you can watch advisory
topics for events related to the status of network bridges. You can get
advisory messages when the network bridge is started or stopped.</p><div
class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1"
rowspan="1" class="confluenceTh"><p>Advisory Topics</p></th><th colspan="1"
rowspan="1" class="confluenceTh"><p>Description</p></th><th colspan="1"
rowspan="1" class="confluenceTh"><p>properties</p></th><th colspan="1"
rowspan="1" class="confluenceTh"><p>Data Structure</p></th><th colspan="1"
rowspan="1" class="confluenceTh"><p>default</p></th></tr><tr><td colspan="1"
rowspan="1" class="c
onfluenceTd"><p>ActiveMQ.Advisory.NetworkBridge</p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>Network bridge being stopped or
started</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>Boolean="started" - true if bridge is started, false if
it is stopped<br clear="none"> Boolean="createdByDuplex" - true if the bridge
is created by remote network connector</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>BrokerInfo - provides data of the remote
broker</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Always
on</p></td></tr></tbody></table></div><h3
id="AdvisoryMessage-Enablingadvisoriesnotturnedonbydefault">Enabling advisories
not turned on by default</h3><p>The advisories that are not turned on by
default (see the last column) can be enabled on a PolicyEntry in the ActiveMQ
Broker Configuration - e.g. - to enable a message consumed advisory you can
configure the following:</p><div class="code panel pdl" style="border-width:
1px;"><div clas
s="codeContent panelContent pdl">
+<script class="brush: java; gutter: false; theme: Default"
type="syntaxhighlighter"><![CDATA[<destinationPolicy>
<policyMap><policyEntries>
<policyEntry topic=">"
advisoryForConsumed="true" />
</policyEntries></policyMap>
</destinationPolicy>
]]></script>
-</div></div> <div class="aui-message hint shadowed information-macro">
- <p class="title">Hint</p>
- <span class="aui-icon icon-hint">Icon</span>
- <div class="message-content">
- <p>The '>' character matches all topics - you
can use wild-card matches for setting a destination policy - see <a
shape="rect" href="wildcards.html">Wildcards</a></p>
- </div>
- </div>
-<h3 id="AdvisoryMessage-Disablingadvisorymessages">Disabling advisory
messages</h3><p>The use of advisory messages incurs a small overhead in terms
of memory and connection resources that is related to the number of
destinations in your system. In some cases it can make sense to disable all
advisories.</p><p>Advisories need to be disabled both on the Broker, via XML
Configuration</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[ <broker
advisorySupport="false">...
+</div></div><div class="confluence-information-macro
confluence-information-macro-information"><p class="title">Hint</p><span
class="aui-icon aui-icon-small aui-iconfont-info
confluence-information-macro-icon"></span><div
class="confluence-information-macro-body"><p>The '>' character matches all
topics - you can use wild-card matches for setting a destination policy - see
<a shape="rect" href="wildcards.html">Wildcards</a></p></div></div><h3
id="AdvisoryMessage-Disablingadvisorymessages">Disabling advisory
messages</h3><p>The use of advisory messages incurs a small overhead in terms
of memory and connection resources that is related to the number of
destinations in your system. In some cases it can make sense to disable all
advisories.</p><p>Advisories need to be disabled both on the Broker, via XML
Configuration</p><div class="code panel pdl" style="border-width: 1px;"><div
class="codeContent panelContent pdl">
+<script class="brush: java; gutter: false; theme: Default"
type="syntaxhighlighter"><![CDATA[ <broker
advisorySupport="false">...
]]></script>
</div></div><p>or from java code</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[BrokerService broker = new BrokerService();
+<script class="brush: java; gutter: false; theme: Default"
type="syntaxhighlighter"><![CDATA[BrokerService broker = new BrokerService();
broker.setAdvisorySupport(false);
...
broker.start();
]]></script>
</div></div><p><em>and</em> on your ActiveMQConnectionFactory (because a
subscription to an advisory topic will auto create it) via the
brokerUrl</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["tcp://localhost:61616?jms.watchTopicAdvisories=false"
+<script class="brush: java; gutter: false; theme: Default"
type="syntaxhighlighter"><![CDATA["tcp://localhost:61616?jms.watchTopicAdvisories=false"
]]></script>
</div></div><p>or via java code using the 'watchTopicAdvisories' attribute on
the ActiveMQConnectionFactory.</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[ActiveMQConnectionFactory factory = new
ActiveMQConnectionFactory();
+<script class="brush: java; gutter: false; theme: Default"
type="syntaxhighlighter"><![CDATA[ActiveMQConnectionFactory factory = new
ActiveMQConnectionFactory();
factory.setWatchTopicAdvisories(false);
]]></script>
-</div></div> <div class="aui-message problem shadowed information-macro">
- <p class="title">Warning</p>
- <span class="aui-icon icon-problem">Icon</span>
- <div class="message-content">
- <p>Advisory messages are required for <a
shape="rect" href="networks-of-brokers.html">dynamic network broker
topologies</a> as NetworkConnectors subscribe to advisory messages. In the
absence of advisories, a network must be statically configured.</p>
- </div>
- </div>
-<h3 id="AdvisoryMessage-Usingthedestinations">Using the
destinations</h3><p>All of the above destinations are really prefixes which are
appended with important information (like the actual topic or queue, the client
ID, producer ID, consumer ID etc). This allows you to reuse the power of
publish/subscribe, <a shape="rect" href="wildcards.html">Wildcards</a> and <a
shape="rect" href="selectors.html">Selectors</a> to filter the advisory
messages as you see fit.</p><p>For example if you want to subscribe to expired
messages on a topic FOO.BAR you could subscribe to
<strong>ActiveMQ.Advisory.Expired.Topic.FOO.BAR</strong>. To subscribe to all
messages of a certain kind of advisory just append <strong>.></strong> to
the topic.</p><p>e.g. to subscribe to all the consumers starting and stopping
to topics and queues subscribe to
<strong>ActiveMQ.Advisory.Consumer..></strong>.</p><h3
id="AdvisoryMessage-Helpermethods">Helper methods</h3><p>Methods to get the
advisory destination object
s are available in <a shape="rect" class="external-link"
href="http://incubator.apache.org/activemq/maven/activemq-core/apidocs/org/apache/activemq/advisory/AdvisorySupport.html">AdvisorySupport</a>
through the following methods.</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[AdvisorySupport.getConsumerAdvisoryTopic()
+</div></div><div class="confluence-information-macro
confluence-information-macro-warning"><p class="title">Warning</p><span
class="aui-icon aui-icon-small aui-iconfont-error
confluence-information-macro-icon"></span><div
class="confluence-information-macro-body"><p>Advisory messages are required for
<a shape="rect" href="networks-of-brokers.html">dynamic network broker
topologies</a> as NetworkConnectors subscribe to advisory messages. In the
absence of advisories, a network must be statically
configured.</p></div></div><h3 id="AdvisoryMessage-Usingthedestinations">Using
the destinations</h3><p>All of the above destinations are really prefixes which
are appended with important information (like the actual topic or queue, the
client ID, producer ID, consumer ID etc). This allows you to reuse the power of
publish/subscribe, <a shape="rect" href="wildcards.html">Wildcards</a> and <a
shape="rect" href="selectors.html">Selectors</a> to filter the advisory
messages as you see fit.</p><p>
For example if you want to subscribe to expired messages on a topic FOO.BAR
you could subscribe to
<strong>ActiveMQ.Advisory.Expired.Topic.FOO.BAR</strong>. To subscribe to all
messages of a certain kind of advisory just append <strong>.></strong> to
the topic.</p><p>e.g. to subscribe to all the consumers starting and stopping
to topics and queues subscribe to
<strong>ActiveMQ.Advisory.Consumer..></strong>.</p><h3
id="AdvisoryMessage-Helpermethods">Helper methods</h3><p>Methods to get the
advisory destination objects are available in <a shape="rect"
class="external-link"
href="http://incubator.apache.org/activemq/maven/activemq-core/apidocs/org/apache/activemq/advisory/AdvisorySupport.html">AdvisorySupport</a>
through the following methods.</p><div class="code panel pdl"
style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<script class="brush: java; gutter: false; theme: Default"
type="syntaxhighlighter"><![CDATA[AdvisorySupport.getConsumerAdvisoryTopic()
AdvisorySupport.getProducerAdvisoryTopic()
AdvisorySupport.getExpiredTopicMessageAdvisoryTopic()
AdvisorySupport.getExpiredQueueMessageAdvisoryTopic()
Modified: websites/production/activemq/content/ajax.html
==============================================================================
--- websites/production/activemq/content/ajax.html (original)
+++ websites/production/activemq/content/ajax.html Sat Jun 27 21:23:55 2015
@@ -32,15 +32,6 @@
</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/shBrushJava.js'
type='text/javascript'></script>
-
- <script type="text/javascript">
- SyntaxHighlighter.defaults['toolbar'] = false;
- SyntaxHighlighter.all();
- </script>
<title>
Apache ActiveMQ ™ -- Ajax
@@ -93,7 +84,7 @@
<p>The AMQ AjaxServlet needs to be installed in your webapplications to
support JMS over Ajax:</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[
+<script class="brush: java; gutter: false; theme: Default"
type="syntaxhighlighter"><![CDATA[
...
<servlet>
<servlet-name>AjaxServlet</servlet-name>
@@ -112,7 +103,7 @@
<p>The ajax featues of amq are provided on the client side by the <a
shape="rect" class="external-link"
href="https://svn.apache.org/repos/asf/activemq/trunk/activemq-web-demo/src/main/webapp/js/amq.js">amq.js</a>
script. Beginning with ActiveMQ 5.4, this script utilizes one of three
different adapters to support ajax communication with the server. Current <a
shape="rect" class="external-link" href="http://jquery.org"
rel="nofollow">jQuery</a>, <a shape="rect" class="external-link"
href="http://prototypejs.org" rel="nofollow">Prototype</a>, and <a shape="rect"
class="external-link" href="http://www.dojotoolkit.org" rel="nofollow">Dojo</a>
are supported, and recent versions of all three libraries are shipped with
ActiveMQ.</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[
+<script class="brush: java; gutter: false; theme: Default"
type="syntaxhighlighter"><![CDATA[
<script type="text/javascript"
src="js/jquery-1.4.2.min.js"></script>
<script type="text/javascript"
src="js/amq_jquery_adapter.js"></script>
<script type="text/javascript"
src="js/amq.js"></script>
@@ -132,7 +123,7 @@
<p>All that is required to send a JMS message from the javascript client, is
to call the method:</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[
+<script class="brush: java; gutter: false; theme: Default"
type="syntaxhighlighter"><![CDATA[
amq.sendMessage(myDestination,myMessage);
]]></script>
</div></div>
@@ -142,7 +133,7 @@ amq.sendMessage(myDestination,myMessage)
<p>To receive messages, the client must define a message handling function and
register it with the <a shape="rect" class="external-link"
href="https://svn.apache.org/repos/asf/activemq/trunk/activemq-web-demo/src/main/webapp/js/amq.js">amq</a>
object. For example:</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[
+<script class="brush: java; gutter: false; theme: Default"
type="syntaxhighlighter"><![CDATA[
var myHandler =
{
rcvMessage: function(message)
@@ -164,7 +155,7 @@ The "message" is actually a text of the
<p>By default, an ajax client will receive all messages on a topic or queue it
is subscribed to. In <a shape="rect" class="external-link"
href="http://activemq.apache.org/activemq-541-release.html">ActiveMQ 5.4.1</a>
amq.js supports <a shape="rect" class="external-link"
href="http://activemq.apache.org/selectors.html">JMS selectors</a> since it is
frequently useful to receive only a subset of these messages. Selectors are
supplied to an <code>amq.addListener</code> call by way of an optional 4th
parameter.</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[
+<script class="brush: java; gutter: false; theme: Default"
type="syntaxhighlighter"><![CDATA[
amq.addListener( myId, myDestination, myHandler.rcvMessage, {
selector:"identifier='TEST'" } );
]]></script>
</div></div>
@@ -176,7 +167,7 @@ amq.addListener( myId, myDestination, my
<p>In this example, we use the current time (at the time the web page is
loaded) as a unique identifier. This is effective as long as two browser
windows are not opened within the same millisecond, and is the approach used by
the example <a shape="rect" class="external-link"
href="https://svn.apache.org/repos/asf/activemq/trunk/activemq-web-demo/src/main/webapp/chat.html">chat.html</a>
included with ActiveMQ. Other schemes to ensure the uniqueness of
<code>clientId</code> can easily be devised. Note that this
<code>clientId</code> need only be unique within a single session. (Browser
windows opened in the same millisecond in separate browsers will not interact,
since they are in different sessions.)</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[
+<script class="brush: java; gutter: false; theme: Default"
type="syntaxhighlighter"><![CDATA[
org.activemq.Amq.init({
uri: 'amq',
logging: true,
Modified: websites/production/activemq/content/amq-message-store.html
==============================================================================
--- websites/production/activemq/content/amq-message-store.html (original)
+++ websites/production/activemq/content/amq-message-store.html Sat Jun 27
21:23:55 2015
@@ -32,15 +32,6 @@
</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/shBrushJava.js'
type='text/javascript'></script>
-
- <script type="text/javascript">
- SyntaxHighlighter.defaults['toolbar'] = false;
- SyntaxHighlighter.all();
- </script>
<title>
Apache ActiveMQ ™ -- AMQ Message Store
@@ -90,7 +81,7 @@ message commands are written to a transa
<div class="sectionColumnWrapper"><div class="sectionMacro">
<div class="sectionMacroRow"><div class="columnMacro"
style="width:50%;min-width:50%;max-width:50%;">
-<p><img class="confluence-embedded-image image-left"
src="amq-message-store.data/amqstore.png"
data-image-src="/confluence/download/attachments/69705/amqstore.png?version=1&modificationDate=1193701758000&api=v2"></p></div>
+<p><span class="confluence-embedded-file-wrapper image-left-wrapper"><img
class="confluence-embedded-image image-left"
src="amq-message-store.data/amqstore.png"
data-image-src="/confluence/download/attachments/69705/amqstore.png?version=1&modificationDate=1193701758000&api=v2"
data-unresolved-comment-count="0" data-linked-resource-id="59670904"
data-linked-resource-version="1" data-linked-resource-type="attachment"
data-linked-resource-default-alias="amqstore.png"
data-base-url="https://cwiki.apache.org/confluence"
data-linked-resource-content-type="image/png"
data-linked-resource-container-id="69705"
data-linked-resource-container-version="21"></span></p></div>
<div class="columnMacro" style="width:50%;min-width:50%;max-width:50%;">
<p><br clear="none" class="atl-forced-newline">
<br clear="none" class="atl-forced-newline">
@@ -106,7 +97,7 @@ The messages are stored in data logs, wh
<p>By default ActiveMQ will use the the AMQ Store - and its default settings.
You can configure the properties of the AMQ Store however, by explictly
defining its persistence adapter (amqPersistenceAdapter):</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[
+<script class="brush: java; gutter: false; theme: Default"
type="syntaxhighlighter"><![CDATA[
<broker brokerName="broker" persistent="true"
useShutdownHook="false">
<persistenceAdapter>
<amqPersistenceAdapter
directory="${activemq.base}/activemq-data"
maxFileLength="32mb"/>
@@ -131,7 +122,7 @@ The messages are stored in data logs, wh
<div class="sectionColumnWrapper"><div class="sectionMacro">
<div class="sectionMacroRow"><div class="columnMacro"
style="width:50%;min-width:50%;max-width:50%;">
-<p><img class="confluence-embedded-image image-left"
src="amq-message-store.data/amqdir.png"
data-image-src="/confluence/download/attachments/69705/amqdir.png?version=1&modificationDate=1193927867000&api=v2"></p></div>
+<p><span class="confluence-embedded-file-wrapper image-left-wrapper"><img
class="confluence-embedded-image image-left"
src="amq-message-store.data/amqdir.png"
data-image-src="/confluence/download/attachments/69705/amqdir.png?version=1&modificationDate=1193927867000&api=v2"
data-unresolved-comment-count="0" data-linked-resource-id="59670910"
data-linked-resource-version="1" data-linked-resource-type="attachment"
data-linked-resource-default-alias="amqdir.png"
data-base-url="https://cwiki.apache.org/confluence"
data-linked-resource-content-type="image/png"
data-linked-resource-container-id="69705"
data-linked-resource-container-version="21"></span></p></div>
<div class="columnMacro" style="width:50%;min-width:50%;max-width:50%;">
<h3 id="AMQMessageStore-Toplevel">Top level</h3>
<p>the message broker's name is used to distinguish its directory of message
data. By default, the broker name is local host.<br clear="none">
Modified: websites/production/activemq/content/amqp.html
==============================================================================
--- websites/production/activemq/content/amqp.html (original)
+++ websites/production/activemq/content/amqp.html Sat Jun 27 21:23:55 2015
@@ -32,16 +32,6 @@
</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/shBrushJava.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 ™ -- AMQP
@@ -82,37 +72,23 @@
<tbody>
<tr>
<td valign="top" width="100%">
-<div class="wiki-content maincontent"><p>ActiveMQ supports the <a shape="rect"
class="external-link"
href="https://www.oasis-open.org/committees/tc_home.php?wg_abbrev=amqp"
rel="nofollow">AMQP 1.0</a> protocol which is an OASIS standard.</p> <div
class="aui-message hint shadowed information-macro">
- <p class="title">Availability</p>
- <span class="aui-icon icon-hint">Icon</span>
- <div class="message-content">
- <p>Available from ActiveMQ version <a shape="rect"
href="activemq-580-release.html">5.8</a> onwards.</p>
- </div>
- </div>
-<h3 id="AMQP-EnablingtheActiveMQBrokerforAMQP">Enabling the ActiveMQ Broker
for AMQP</h3><p>Its very easy to enable ActiveMQ for AMQP. Just add a connector
to the broker using the amqp URL.</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[<transportConnectors>
+<div class="wiki-content maincontent"><p>ActiveMQ supports the <a shape="rect"
class="external-link"
href="https://www.oasis-open.org/committees/tc_home.php?wg_abbrev=amqp"
rel="nofollow">AMQP 1.0</a> protocol which is an OASIS standard.</p><div
class="confluence-information-macro
confluence-information-macro-information"><p
class="title">Availability</p><span class="aui-icon aui-icon-small
aui-iconfont-info confluence-information-macro-icon"></span><div
class="confluence-information-macro-body"><p>Available from ActiveMQ version <a
shape="rect" href="activemq-580-release.html">5.8</a>
onwards.</p></div></div><h3 id="AMQP-EnablingtheActiveMQBrokerforAMQP">Enabling
the ActiveMQ Broker for AMQP</h3><p>Its very easy to enable ActiveMQ for AMQP.
Just add a connector to the broker using the amqp URL.</p><div class="code
panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
+<script class="brush: java; gutter: false; theme: Default"
type="syntaxhighlighter"><![CDATA[<transportConnectors>
<transportConnector name="amqp"
uri="amqp://0.0.0.0:5672"/>
</transportConnectors>
]]></script>
-</div></div><p>It is enabled in the default ActiveMQ server
configuration.</p><p>For more help see <a shape="rect"
href="run-broker.html">Run Broker</a>.</p><h3
id="AMQP-Security">Security</h3><p>The AMQP implementation fully supports an <a
shape="rect" href="security.html">ActiveMQ security</a> mechanism. This means
that the broker accepts plain SASL authentication. Also, the authorization
policies will be applied when you try to access (read/write) certain
destinations.</p> <div class="aui-message success shadowed
information-macro">
- <p class="title">SSL</p>
- <span class="aui-icon icon-success">Icon</span>
- <div class="message-content">
- <p>For additional security, you can use AMQP over
SSL as described in the following section.</p>
- </div>
- </div>
-<h3 id="AMQP-EnablingAMQPoverNIO">Enabling AMQP over NIO</h3><p>For better
scalability (and performance) you might want to run the AMQP protocol over the
NIO transport. To do that just use <code>amqp+nio</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+nio" uri="amqp+nio://localhost:5672"/>
+</div></div><p>It is enabled in the default ActiveMQ server
configuration.</p><p>For more help see <a shape="rect"
href="run-broker.html">Run Broker</a>.</p><h3
id="AMQP-Security">Security</h3><p>The AMQP implementation fully supports an <a
shape="rect" href="security.html">ActiveMQ security</a> mechanism. This means
that the broker accepts plain SASL authentication. Also, the authorization
policies will be applied when you try to access (read/write) certain
destinations.</p><div class="confluence-information-macro
confluence-information-macro-tip"><p class="title">SSL</p><span class="aui-icon
aui-icon-small aui-iconfont-approve
confluence-information-macro-icon"></span><div
class="confluence-information-macro-body"><p>For additional security, you can
use AMQP over SSL as described in the following section.</p></div></div><h3
id="AMQP-EnablingAMQPoverNIO">Enabling AMQP over NIO</h3><p>For better
scalability (and performance) you might want to run the AMQP protocol over the
NIO trans
port. To do that just use <code>amqp+nio</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="brush: xml; gutter: false; theme: Default"
type="syntaxhighlighter"><![CDATA[ <transportConnector
name="amqp+nio" uri="amqp+nio://localhost:5672"/>
]]></script>
</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 class="brush: xml; gutter: false; theme: Default"
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. <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>
+<script class="brush: java; gutter: false; theme: Default"
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">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>
+<script class="brush: java; gutter: false; theme: Default"
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 class="brush: xml; gutter: false; theme: Default"
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>
</td>
Modified:
websites/production/activemq/content/apache-activemq-board-report-200708-august.html
==============================================================================
---
websites/production/activemq/content/apache-activemq-board-report-200708-august.html
(original)
+++
websites/production/activemq/content/apache-activemq-board-report-200708-august.html
Sat Jun 27 21:23:55 2015
@@ -32,15 +32,6 @@
</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/shBrushJava.js'
type='text/javascript'></script>
-
- <script type="text/javascript">
- SyntaxHighlighter.defaults['toolbar'] = false;
- SyntaxHighlighter.all();
- </script>
<title>
Apache ActiveMQ ™ -- Apache ActiveMQ Board Report - 2007.08 (August)
@@ -82,7 +73,7 @@
<tr>
<td valign="top" width="100%">
<div class="wiki-content maincontent"><h1
id="ApacheActiveMQBoardReport-2007.08(August)-StatusreportfortheApacheActiveMQProject">Status
report for the Apache ActiveMQ Project</h1><div class="code panel pdl"
style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<script class="theme: Default; brush: plain; gutter: false"
type="syntaxhighlighter"><![CDATA[July board report was missed in part due to a
change in PMC chair.
+<script class="brush: plain; gutter: false; theme: Default"
type="syntaxhighlighter"><![CDATA[July board report was missed in part due to a
change in PMC chair.
Community:
* The developer and user communities remain very active.