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:
- Server asks Client to perform some tasks by sending command to it
- Server pulls the task status/result from Client
- Client sends some heartbeat messages to Server
- Server querys some process status from Client
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