Thanks Dejan!

Two more questions:
1) Is store usage counted when JDBC persistence is used?
2) VM cursor and small memory limits are used. Does that mean that
nothing will ever be paged out for non-persistent messages?

On Mon, 19 Jul 2010 10:00:48 +0200
Dejan Bosanac <de...@nighttale.net> wrote:

> Hi,
> 
> at first glance I don't see anything wrong with your assumptions and
> setup. You should try testing it in your environment and see if it
> works as expected.
> 
> Cheers
> --
> Dejan Bosanac - http://twitter.com/dejanb
> 
> Open Source Integration - http://fusesource.com/
> ActiveMQ in Action - http://www.manning.com/snyder/
> Blog - http://www.nighttale.net
> 
> 
> 
> On Sun, Jul 18, 2010 at 9:28 PM, Vjaceslavs Klimovs
> <vklim...@gmail.com> wrote:
> > Hi,
> >
> > We generally have two types of messages passing through our ActiveMQ
> > instances. (1) First type needs transacted guaranteed delivery and
> > high-availability, but the amount of messages of this kind is low,
> > and latency is not really important. (2) Second type, on the other
> > hand, needs low latency delivery, and there can be substantial
> > amount of these messages. However, reliability is not that
> > important. (3) We would also like to be able to take down brokers
> > as needed, and of course we want them to come up and resume
> > operations when we are done with doing whatever we were doing with
> > the respective machine. (4) We don't have SAN but we have clustered
> > MySQL database. (5) We want to use JMX for management.
> >
> > This is where our findings start. Messages of type (1) should be
> > sent and received using JMS transactions, and should be persistent.
> > Messages of type (2) should be sent in auto acknowledgement mode and
> > should not be persistent. Because of HA requirement in (1) we need
> > to run two brokers. Because of (3) and (4) the only suitable
> > master/slave configuration is using JDBC. Because of the (2), small
> > limits should be placed on queues, and VM cursor should be used.
> >
> > Now, how I think this is going to work. Any of the two brokers which
> > starts first, grabs a lock on the DB, becomes master and starts it's
> > transport connections. The other one that starts after, does not
> > get a lock and does not start transport connections. Clients, which
> > are configured to use failover:// transport, connect to either one
> > and start exchanging messages, either of type (1) or of type (2).
> > Type (1) messages are persisted to the database. If the master
> > broker goes down, slave gets the database lock, starts transport
> > connectors and party continues. If the one that went down comes up,
> > it becomes slave and waits for the lock. Type (2) messages are
> > never persisted, and therefore are very fast.
> >
> > Based on all above, I've created configuration for brokers, it is
> > here: http://pastebin.com/YxV15k8M
> >
> > I would be really grateful if someone could look through it, as
> > well as through my assumptions on the functioning of the system,
> > and see if I am wrong, missed something, or if something can be
> > done better to achieve stated requirements. I also have two
> > concrete questions: 1) Is store usage counted when JDBC persistence
> > is used? 2) VM cursor and small memory limits are used. Does that
> > mean that nothing will ever be paged out for non-persistent
> > messages?
> >
> > Sorry for the long post. Thank you in advance for any feedback.
> >
> > /Vjaceslavs
> >
> >

Reply via email to