activemq-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Bruce Snyder <>
Subject Re: HA Active MQ question
Date Thu, 09 Apr 2009 21:18:05 GMT
On Thu, Apr 9, 2009 at 1:21 PM, Michael S. <> wrote:
> All,
> I've searched through existing messages, but I've not seen messages that
> seem to address my question(s) directly.
> I'm trying to design an Active MQ setup with the following properties:
> 1. HA - I'd like our setup to be available 99.9% of the time.
> 2. Messages don't get lost - this is probably the most important
> requirement.
> We'll be running our Active MQ instances on CentOS Linux, optionally backed
> by MySQL data stores. We'll be using Active MQ 5.2.
> I've looked through the Master/Slave documentation but I find it confusing.
> My first thought was to have a master/slave setup with a shared database.
> However, how do the clients (Stomp) know how to switch from one server to
> the other? Does that logic need to be written into the client? I've seen
> references to a failover URI:
> failover:(tcp://primary:61616,tcp://secondary:61616)?randomize=false
> Is that something that goes in the broker? In the client? I'm finding this
> very confusing. If somebody had an example of using that failover URI in
> practice, that'd be a huge help.

The URI noted above is used on the client-side in the same manner as
using a tcp:// URI. Below is a quick example:

String brokerUri =

ActiveMQConnectionFactory connectionFactory =
        new ActiveMQConnectionFactory(brokerUri);
Connection connection = connectionFactory.createConnection();

The failover:// portion of the URI indicates to the client to use the
failover transport:

> I guess my main question/concern is client configuration. If I have a
> master/slave setup (with the master and slave on two different machines),
> how will the clients resolve the proper Active MQ instance to which they're
> supposed to connect?

As indicated in the docs, the failover transport tries each URI listed
until it finds one available or it times out.

> How do I do this without losing messages?

This is where a pure master/slave configuration would enter the picture:

Read the section titled, 'How Pure Master Slave works'. This explains
that a master doesn't act on a message until it has been successfully
replicated to a slave.

perl -e 'print unpack("u30","D0G)U8V4\@4VYY9&5R\"F)R=6-E+G-N>61E<D\!G;6%I;\"YC;VT*"

ActiveMQ in Action:

View raw message