弹簧跺脚继电器+;RabbitMQ集群,每个集群前面都有HA代理,用于负载平衡

弹簧跺脚继电器+;RabbitMQ集群,每个集群前面都有HA代理,用于负载平衡,rabbitmq,scalability,spring-websocket,spring-messaging,Rabbitmq,Scalability,Spring Websocket,Spring Messaging,我正在设计一个系统,将从设备生成的大量实时数据传输给用户,最好是通过WebSocket。我决定使用SpringStompWebSockets,因为它可以更快地设置、理解和支持一些开箱即用的东西,比如RabbitMQ和安全性。另外,因为计划将Spring用于另一个RESTAPI,所以Spring可以作为技术堆栈的选择。RabbitMQ是我决定使用的消息代理。然而,对于如何扩展这样一个系统,我找不到足够的指导 我想到的可能解决办法是: 在STOMP broker实例前面和之间添加HAProxy S

我正在设计一个系统,将从设备生成的大量实时数据传输给用户,最好是通过WebSocket。我决定使用SpringStompWebSockets,因为它可以更快地设置、理解和支持一些开箱即用的东西,比如RabbitMQ和安全性。另外,因为计划将Spring用于另一个RESTAPI,所以Spring可以作为技术堆栈的选择。RabbitMQ是我决定使用的消息代理。然而,对于如何扩展这样一个系统,我找不到足够的指导

我想到的可能解决办法是:

  • 在STOMP broker实例前面和之间添加HAProxy STOMP代理和RabbitMQ集群,HAProxy将充当 两种情况下的负载均衡器。SpringStomp代理将指向HAProxy作为代理中继主机。要求具有高可用性和无数据丢失
由于我之前没有Websockets的经验,我想了解一下这个解决方案听起来是否正确,或者我是否遗漏了什么


注意:在这个系统中,消息生产者和消费者实际上都是websocket Java客户端。我从中获取了示例代码并创建了两个独立的客户端-一个只发送消息,即设备数据(生产者),另一个订阅这些消息(消费者)。因此,两者都使用相同的websocket URL连接到相同的STOMP代理。在上述系统实现中,客户端将指向HAProxy进行websocket连接。

只是更新了这一点,我通过创建上述设置进行了实验,它成功了,即我能够使用RabbitMQ代理连接到websocket stomp服务器/发送/接收数据,并使用HAProxy负载平衡,如上所述。Spring中配置的代理主机/端口指向HAProxy,后者反过来将请求转发到RabbitMQ后端。类似地,websocket客户端通过HAProxy连接到Spring STOMP websocket服务器应用程序