Arquitectura de la solucion
Los procesos publican colas de mensajes con datos relevantes del dispositivo específico (para este caso de prueba, son reactores reportando temperaturas y presiones).Los procesos crean conexión TCP con un servidor único que corre ActiveMQ, donde crean colas y publican los mensajes. Tanto el conector de Base de datos en java como el cliente pueden ver y consumir los datos de las colas.
Adicionalmente, los procesos (reactores) que son los productores de mensajes, también crean colas de control. Ellos mismos consumirán de esas colas, y el cliente/controlador puede enviar mensajes y controlar los reactores enviando mensajes a estas colas de control. Cuando llegue un mensaje a una cola de control (por ejemplo ControlQueue:reactor1), el proceso respectivo (Reactor1) que está escuchando consumirá el mensaje recibido en esa cola y utilizará el mensaje para ejecutar alguna acción en su máquina de estados (por ejemplo, un msg=OFF apagara la maquina respectiva).
Conclusiones y Relevancia de la Solución
Si bien puede implementarse una lógica similar usando solo bases de datos, esta solución es más rápida, más fácil, y además soporta variados protocolos de comunicación; entre ellos, SIP. Además también puede usarse para comunicar procesos en distintos lenguajes, como C++, python, php.Otra ventaja es que, si uno de los procesos se cae, la cola de mensajes asociado a ese proceso seguirá recibiendo mensajes, y cuando el proceso reviva, recibirá todos los mensajes que se perdieron, en orden FIFO. Además es posible replicar las colas y tener cuantos brokers se desee, agregando redundancia y reduciendo la probabilidad de falla por comunicación.