Running an ActiveMQ Broker

Note if you want to use an embedded broker then see How do I embed a Broker inside a Connection

The binary distribution of ActiveMQ comes with a script called 'activemq' which allows you to run a broker. Typing the following will run an ActiveMQ Broker using the out of the box configuration

activemq

There are a number of different command line options to be able to run a broker. To see them type

activemq -?

For more details regarding the activemq script file and other script files refer to ActiveMQ Command Line Tools Reference

You can then use a Broker Configuration URI to specify how to start and configure your broker using a single URI. For example

activemq broker:(tcp://localhost:61616,network:static:tcp://remotehost:61616)?persistent=false&useJmx=true

Or you can a Broker XBean URI to customize the Message Broker using the Xml Configuration to suit your needs. You can run a broker with a specific XML configuration as

activemq xbean:foo.xml

Or you can use a Broker Properties URI to customize the Message Broker using a properties file; which avoids the dependency on Spring, xbean-spring and XML.

activemq properties:foo.properties

Unix shell warning

If you are running a broker on a remote unix machine via telnet/ssh, when you exit your shell the broker will terminate too. If you want to keep the broker running you may want to use the /etc/init.d type services to run the broker. Or try use nohup. e.g.

nohup activemq > /dev/null &

Monitoring the broker

There are various ways to monitor ActiveMQ. If you are on version 4.2 or later of ActiveMQ you can then monitor ActiveMQ using the Web Console by pointing your browser at

http://localhost:8161/admin

Or you can use the JMX support to view the running state of ActiveMQ.

Running the broker inside a Servlet Engine

See the source code (or WAR) of the Web Console for an example of how to run the broker inside a web application using Spring.

Running the broker inside your J2EE 1.4 Application Server

Whether its Apache Geronmio, JBoss 4, WebLogic 9 or some other J2EE 1.4 container you should be able to just reconfigure and then deploy the activemq-*.rar which is included in the binary distribution as a deployment unit in your app server. By default the rar is not configured to start an embedded broker. But by setting the brokerXmlConfig on the resource adapter configuration, the resource adapter will start an embedded broker.

For more details see J2EE

Running the broker from the source code

From the latest checkout of the code you can run a broker using the ActiveMQ Performance Plugin

Running the broker from maven

You can download and install the ActiveMQ Startup Maven Plugin via the following command if you are in a directory with a pom.xml. More detailed usage here

mvn org.apache.activemq.tooling:maven-activemq-plugin:5.0-SNAPSHOT:run    

You can also include it the pom and run it using:

mvn activemq:run          

Handling JMS brokers going down

A common requirement is that if the JMS broker goes down you want to automatically detect the failure and try to reconnect under the covers so that your application does not have to worry about reconnection.

There is detailed documentation on this in Configuring version 5 Transports; briefly...

Just change your connection URI i to

failover:tcp://host:port

And the JMS client will auto-reconnect to the broker if it is shutdown and restarted later on.