Return-Path: X-Original-To: apmail-activemq-commits-archive@www.apache.org Delivered-To: apmail-activemq-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id A8A4A10239 for ; Wed, 12 Feb 2014 20:22:20 +0000 (UTC) Received: (qmail 65802 invoked by uid 500); 12 Feb 2014 20:22:17 -0000 Delivered-To: apmail-activemq-commits-archive@activemq.apache.org Received: (qmail 65731 invoked by uid 500); 12 Feb 2014 20:22:16 -0000 Mailing-List: contact commits-help@activemq.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@activemq.apache.org Delivered-To: mailing list commits@activemq.apache.org Received: (qmail 65694 invoked by uid 99); 12 Feb 2014 20:22:16 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 12 Feb 2014 20:22:16 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 12 Feb 2014 20:22:04 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id 9495923888D7 for ; Wed, 12 Feb 2014 20:21:41 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r897670 [1/2] - in /websites/production/activemq/content: advisory-message.html cache/main.pageCache contributing.html how-can-i-contribute.html team.html Date: Wed, 12 Feb 2014 20:21:41 -0000 To: commits@activemq.apache.org From: buildbot@apache.org X-Mailer: svnmailer-1.0.9 Message-Id: <20140212202141.9495923888D7@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: buildbot Date: Wed Feb 12 20:21:41 2014 New Revision: 897670 Log: Production update by buildbot for activemq Modified: websites/production/activemq/content/advisory-message.html websites/production/activemq/content/cache/main.pageCache websites/production/activemq/content/contributing.html websites/production/activemq/content/how-can-i-contribute.html websites/production/activemq/content/team.html Modified: websites/production/activemq/content/advisory-message.html ============================================================================== --- websites/production/activemq/content/advisory-message.html (original) +++ websites/production/activemq/content/advisory-message.html Wed Feb 12 20:21:41 2014 @@ -81,28 +81,8 @@ -

ActiveMQ supports advisory messages which allows you to watch the system using regular JMS messages. Currently we have advisory messages that support

- -
  • consumers, producers and connections starting and stopping
  • temporary destinations being created and destroyed
  • messages expiring on topics and queues
  • brokers sending messages to destinations with no consumers.
  • connections starting and stopping
- - -

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.

- -

When you look at a broker via JMX you will see the advisory topics prefixed with ActiveMQ.Advisory..

- -

Every Advisory has the message type 'Advisory' and some predefined message properties:

- -

property name

type

description

version

originBrokerId

StringProperty

the id of the broker where the advisory originated

5.x

originBrokerName

StringProperty

the name of the broker where the advisory originated

5.x

originBrokerURL

StringProperty

the first URL of the broker where the advisory originated

5.2

- - -

In addition, some messages carry a Command object - which carries more information for the advisory - e.g.

- -

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.

- -

For example:

-
- -
- -

The following advisory topics are supported

- -

Client based advisories

-
+

The following advisory topics are supported

Client based advisories

Tip

Icon
- -

These are always generated

+

These are always generated

- - -

Advisory Topics

Description

properties

Data Structure

ActiveMQ.Advisory.Connection

Connection start & stop messages

ActiveMQ.Advisory.Producer.Queue

Producer start & stop messages on a Queue

String='producerCount' - the number of producers

ProducerInfo

ActiveMQ.Advisory.Producer.Topic

Producer start & stop messages on a Topic

String='producerCount' - the number of producers

ProducerInfo

ActiveMQ.Advisory.Consumer.Queue

Consumer start & stop messages on a Queue

String='consumerCount' - the number of Consumers

ConsumerInfo

ActiveMQ.Advisory.Consumer.Topic

Consumer start & stop messages on a Topic

String='consumerCount' - the number of Consumers

ConsumerInfo

- - -

Note that the consumer start/stop advisory messages also have a consumerCount 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...

- -
- -
- - -

Destination and Message based advisories

- -

Advisory Topics

Description

properties

Data Structure

default

PolicyEntry property

ActiveMQ.Advisory.Queue

Queue create & destroy

null

null

true

none

ActiveMQ.Advisory.Topic

Topic create & destroy

null

null

true

none

ActiveMQ.Advisory.TempQueue

Temporary Queue create & destroy

null

null

true

none

ActiveMQ.Advisory.TempTopic

Temporary Topic create & destroy

null

null

true

none

ActiveMQ.Advisory.Expired.Queue

Expired messages on a Queue

String='orignalMessageId' - the expired id

Message

true

none

ActiveMQ.Advisory.Expired.Topic

Expired messages on a Topic

String='orignalMessageId' - the expired id

Message

true

none

ActiveMQ.Advisory.NoConsumer.Queue

No consumer is available to process messages being sent on a Queue

null

Message

false

sendAdvisoryIfNoConsumers

ActiveMQ.Advisory.NoConsumer.Topic

No consumer is available to process messages being sent on a Topic

null

Message

false

sendAdvisoryIfNoConsumers

- - -
+

Destination and Message based advisories

Advisory Topics

Description

properties

Data Structure

default

PolicyEntry property

ActiveMQ.Advisory.Queue

Queue create & destroy

null

null

true

none

ActiveMQ.Advisory.Topic

Topic create & destroy

null

null

true

none

ActiveMQ.Advisory.TempQueue

Temporary Queue create & destroy

null

null

true

none

ActiveMQ.Advisory.TempTopic

Temporary Topic create & destroy

null

null

true

none

ActiveMQ.Advisory.Expired.Queue

Expired messages on a Queue

String='orignalMessageId' - the expired id

Message

true

none

ActiveMQ.Advisory.Expire d.Topic

Expired messages on a Topic

String='orignalMessageId' - the expired id

Message

true

none

ActiveMQ.Advisory.NoConsumer.Queue

No consumer is available to process messages being sent on a Queue

null

Message

false

sendAdvisoryIfNoConsumers

ActiveMQ.Adviso ry.NoConsumer.Topic

No consumer is available to process messages being sent on a Topic

null

Message

false

sendAdvisoryIfNoConsumers

Tip

Icon
- -
  • NoConsumer topic advisories are sent only for non-persistent messages
- +
  • NoConsumer topic advisories are sent only for non-persistent messages
- - -

New advisories in version 5.2

-

Advisory Topics

Description

properties

Data Structure

default

PolicyEntry property

ActiveMQ.Advisory.SlowConsumer.Queue

Slow Queue Consumer

String='consumerId' - the consumer id

ConsumerInfo

false

advisory ForSlowConsumers

ActiveMQ.Advisory.SlowConsumer.Topic

Slow Topic Consumer

String='consumerId' - the consumer id

ConsumerInfo

false

advisoryForSlowConsumers

ActiveMQ.Advisory.FastProducer.Queue

Fast Queue producer

String='producerId' - the producer id

ProducerInfo

false

advisdoryForFastProducers

ActiveMQ.Advisory. FastProducer.Topic

Fast Topic producer

String='consumerId' - the producer id

ProducerInfo

false

advisdoryForFastProducers

ActiveMQ.Advisory.MessageDiscarded.Queue

Message discarded

String='orignalMessageId' - the discarded id

Message

false

advisoryForDiscardingMessages

ActiveMQ.Advisory.MessageDiscarded.Topic

Message discarded

String='orignalMessageId' - the discarded id

Message

false

advisoryForDiscardingMessages

ActiveMQ.Advisory.MessageDelivered.Queue

Message delivered to the broker

String='orignalMessageId' - the delivered id

Message

false

advisoryForDelivery

ActiveMQ.Advisory.MessageDelivered.Topic

Message delivered to the broker

String='orignalMessageId' - the delivered id

Message

false

advisoryForDelivery

ActiveMQ.Advisory.MessageConsumed.Queue

Message consumed by a client

String='orignalMessageId' - the delivered id

Message

false

advisoryForConsumed

ActiveMQ.Advisory.MessageConsumed.Topic

Message consumed by a client

String='orignalMessageId' - the delivered id

Message

false

advisoryForConsumed

ActiveMQ.Advisory.FULL

A Usage resource is at its limit

String='usageName' - the name of Usag e resource

null

false

advisoryWhenFull

ActiveMQ.Advisory.MasterBroker

A broker is now the master in a master/slave configuration

null

null

true

none

- - -

New Advisories in 5.4

- -

Advisory Topics

Description

properties

Data Structure

default

PolicyEntry property

ActiveMQ.Advisory.MessageDLQd.Queue

Message sent to DLQ

String='orignalMessageId' - the delivered id

Message

Always on

adv isoryForConsumed

ActiveMQ.Advisory.MessageDLQd.Topic

Message sent to DLQ

String='orignalMessageId' - the delivered id

Message

Always on

advisoryForConsumed

- - -

Network bridge advisories

- -

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.

- -

Advisory Topics

Description

properties

Data Structure

default

ActiveMQ.Advisory.NetworkBridge

Network bridge being stopped or started

Boolean="started" - true if bridge is started, false if it is stopped
-Boolean="createdByDuplex" - true if the bridge is created by remote network connector

BrokerInfo - provides data of the remote broker

Always on

- - - -

Enabling advisories not turned on by default

- -

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:

- -
- -
- -
+

Hint

Icon
- -

The '>' character matches all topics - you can use wild-card matches for setting a destination policy - see Wildcards

+

The '>' character matches all topics - you can use wild-card matches for setting a destination policy - see Wildcards

- - -

Disabling advisory messages

-

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.

- -

Advisories need to be disabled both on the Broker, via XML Configuration

-
- -
-

or from java code

-
- -
-

and on your ActiveMQConnectionFactory (because a subscription to an advisory topic will auto create it) via the brokerUrl

-
+

and on your ActiveMQConnectionFactory (because a subscription to an advisory topic will auto create it) via the brokerUrl

-
-

or via java code using the 'watchTopicAdvisories' attribute on the ActiveMQConnectionFactory.

-
- -
-
+

Warning

Icon
- -

Advisory messages are required for dynamic network broker topologies as NetworkConnectors subscribe to advisory messages. In the absence of advisories, a network must be statically configured.

+

Advisory messages are required for dynamic network broker topologies as NetworkConnectors subscribe to advisory messages. In the absence of advisories, a network must be statically configured.

- - -

Using the destinations

- -

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, Wildcards and Selectors to filter the advisory messages as you see fit.

- -

For example if you want to subscribe to expired messages on a topic FOO.BAR you could subscribe to ActiveMQ.Advisory.Expired.Topic.FOO.BAR. To subscribe to all messages of a certain kind of advisory just append .> to the topic.

- -

e.g. to subscribe to all the consumers starting and stopping to topics and queues subscribe to ActiveMQ.Advisory.Consumer..>.

- -

Helper methods

- -

Methods to get the advisory destination objects are available in AdvisorySupport through the following methods.

- -
- -
- -

Some helper classes to deal with advisory messages are available in the advisories package.

- -

For users of previous releases see the Advisory Support in ActiveMQ 3

+

Some helper classes to deal with advisory messages are available in the advisories package.

Submitting patches

The easiest way to submit a patch is to create a new JIRA issue, attach the patch and tick the ASF license grant check box, tick the Patch Attached button on the issue then fire off an email to the Mailing Lists or Discussion Forums.

Becoming a commmitter

Once you've got involved as above, we may well invite you to be a committer. See Becoming a committer for more details.

Using the issue tracker

Before you can raise an issue in the issue tracker you need to register with it. This is quick & painless.

If you want to have a go at fixing an issue you need to be in the list of activemq-developers on the issue tracker. To join the group, please mail t he dev@activemq.codehaus.org mail list with the email address you used to register with the issue tracker and we'll add you to the group.

Why not dive in the issue tracker, and try tackle some of our outstanding issues?

Becoming a committer

The first step is contributing to the project; if you want to take that a step forward and become a fellow committer on the project then see the Committer Guide

Submitting patches

The easiest way to submit a patch is to create a new JIRA issue, attach the patch and tick the ASF license grant check box, tick the Patch Attached button on the issue then fire off an email to the Mailing Lists or Discussion Forums.

Becoming a commmitter

Once you've got involved as above, we may well invite you to be a committer. See Becoming a committer for more details.

Using the issue tracker

Before you can raise an issue in the issue tracker you need to register with it. This is quick & painless.

If you want to have a go at fixing an issue you need to be in the list of activemq-developers on the issue tracker. To join the group , please mail the dev@activemq.codehaus.org mail list with the email address you used to register with the issue tracker and we'll add you to the group.

Why not dive in the issue tracker, and try tackle some of our outstanding issues?

Becoming a committer

The first step is contributing to the project; if you want to take that a step forward and become a fellow committer on the project then see the Committer Guide