I have a Java application which consists two kind of long running processes, let's say Server and Client, and usually the number of Clients is greater than 10.
Some of the application behavior are:
Now I implement this just by transporting serialized object over TCP/IP socket. But I soon discovered that's too much details (e.g. reliability, workload monitoring) I have to deal with. So I'm looking for the various options to implement something like this. I'm currently considering message brokers like ActiveMQ, RabbitMQ or even ZeroMQ.
Any advice and suggestions will be greatly appreciated.
ps. Speed is not a concern for me
Try first to identify and sort your key design priorities in a Top/Down List and assign the correct priorities:
You may have already found, that ZeroMQ is a broker-less solution. That is important for performance scale-ability and for designing a fail-safe architecture ( one may design so that a single element failure does not stop the properly designed architecture ).
ZeroMQ has fabulous capabilities, once you can deploy the Scaleable Formal Communication Patterns for your problem you win a lot of power by re-use of the well-thought framework.