activemq-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From cobrien <>
Subject Re: Noob Questions - Fail-over / Redundancy Help.
Date Tue, 06 Jul 2010 22:55:59 GMT

It seems to me you have  tested three scenarios.
>From your first posting.
1) You kill the activemq process for the master. Result: In this case
everything worked fine. 
2) You pulled the plug on the machine running activemq. Result: The 
database did not detect the connection was closed in a timely fashion so
lock was not released on table. A solution to this problem is to make the
database detect closed connections sooner- TCP config etc. 

Now what about the last scenario. How was ActiveMQ shut down? How did was is
restarted? How did you test that the restarted instance was actually
processing messages?  
ActiveMQ reference guide at 

Our problem with using Oracle was that if the Active or Hot instance were to
become disconnected and with the changes made to Oracle to timeout the
connection and therefore release the lock on the database were to succeed,
we would indeed have a secondary or standby instance begin processing and
all is well until the previous instance again returns to the network and
what we are finding is that it will again create a session with Oracle and
will begin processing in parallel without attempting to gain a lock on the
DB. Now we have a problem of two instances of ActiveMQ are running.

Any advice on the best method? 

I see there have been some problems with persistence store corruption with
NFS as well.

Is ActiveMQ not ready for production enterprise networks or is there a
better method of implementing H.A.?

cobrien wrote:
> For Oracle, the  master instance of ActiveMQ obtains a lock the database
> using a "select for update"  SQL statement. 
> It appears that when you pull the plug, the data store does not detect the
> stale connection in a  timely enough  fashion for your requirements. 
> You can shorten the time needed to detect the stale connection by tuning
> the  keepAlive TCP parameters ( OS specific) to meet your uptime
> requirements.  When using oracle, setting  'ENABLE=BROKEN' in the TNS  ora 
> will enable  use of the keepAlive packets.
> Oracle also allows you to ping the client at regular intervals set by
> sqlnet.expire_time (in minutes!). 
> As always, do your testing in  an environment that   mimics your
> production environment first. You may have to use trial and error  to find
> the right settings for your OS and data store.

View this message in context:
Sent from the ActiveMQ - User mailing list archive at

View raw message