We have an application where we need to keep a group ( cluster ) of computers in sync when in memory data structures change as well as when files get written to the file system.
We have looked at JavaGroups and we are currently looking at JBoss JMS using Topics with non-durable subscribers. I was wondering if anyone on this list can provide a pros/cons of each approach.
Just for some background. We do not need persistent, guaranteed delivery if the other machines are not running. Just while the machines are running do we need guaranteed delivery. The changes are typically small, and occur at a low rate - I would think about 1 message / minute. It is possible that we will have to share large objects, around 1 to 5 Meg in size, but this would happen perhaps 1 large message / hour.
Some of the drawbacks to JMS that I see are:
1) I have another machine to administer
2) I have to handle the situation where the JMS provider goes down.
3) In the client I have to detect when it is back up
Some of the pros to JMS
1) Standard API
2) People know it
3) Many providers - but I really want to stick with the JBoss implementation
1) Not well known
2) Not sure its actually been deployed in a real production site
3) Unclear on stability - although it worked well for in our quick prototype
1) Very easy to setup a use
2) No other machines to deal with
3) Deals with the 'dont send to publisher' problem
4) Seems to provide guaranteed delivery - although I am not sure how to test this.
5) No additional machines to administer
6) No special error handling code in client to detect when provider is available
Thanks for any help or insight you can provide