Estoy desarrollando un sistema de notificación en tiempo real en Spring 4 usando un Message Broker incorporado y STOMP sobre WebSocket.
Me gustaría manejar un caso cuando hay un servidor de aplicaciones múltiples y el destino del usuario no está resuelto (porque el usuario está conectado a otro servidor). Los documentos de Spring afirman que hay una solución:
En un escenario de servidor de aplicaciones múltiples, el destino de un usuario puede permanecer sin resolver porque el usuario está conectado a un servidor diferente. En tales casos, puede configurar un destino para transmitir mensajes no resueltos para que otros servidores tengan la oportunidad de intentarlo. Esto se puede hacer a través de la propiedad userDestinationBroadcast de MessageBrokerRegistry en la configuración de Java y el atributo user-destination-broadcast del elemento message-broker en XML.
Pero no hay ningún ejemplo de tal configuración. ¿Cómo puedo configurar servidores para recibir estos mensajes y parámetros de autenticación para el canal del sistema?
Cuando se trata de aplicaciones de múltiples nodos que usan WebSockets sobre STOMP, debe configurar y usar un STOMP Broker externo (como RabbitMQ) para que las diferentes instancias de la aplicación puedan comunicarse entre sí. Ya lo estás haciendo, ¿verdad?
Para configurar userDestinationBroadcast y userRegistryBroadcast simplemente asígneles un nombre de destino. Cuando se inicia la aplicación y se establece la conexión TCP del sistema entre la aplicación y el corredor, estos destinos se crearán automáticamente y todo funcionará bien y de forma transparente.
He codificado una aplicación de Web Chat usando Spring WebSockets, RabbitMQ y mucho más y su configuración está disponible aquí .
Espero que esto ayude.