具有HA代理的Spring STOMP Broker Relay RabbitMQ集群面向每个负载平衡

我正在设计一个系统,其中从设备生成的大量实时数据最好通过websockets传输给用户.我决定使用
Spring STOMP Websockets,因为它更快地设置,理解并且开箱即用,如RabbitMQ和Security.而且因为计划是将Spring用于另一个REST API,所以Spring作为技术堆栈的选择. RabbitMQ是我决定使用的消息代理.但是我找不到关于如何扩展这样一个系统的大量指导.

我想到的可能的解决方案是:

>在STOMP代理实例之前以及之间添加HAProxy
STOMP经纪人和RabbitMQ集群,HAProxy将充当
两种情况下的负载均衡器.然后,Spring STOMP代理将指向HAProxy作为代理中继主机.要求是具有高可用性并且没有数据丢失.

由于我没有Websockets的经验,我想获得有关此解决方案听起来是否正确或者我在这里缺少什么的指导?

注意:在此系统中,消息生成器和使用者实际上都是websocket Java客户端.我从https://github.com/nickebbutt/stomp-websockets-java-client获取了示例代码并创建了两个单独的客户端 – 一个只发送消息,即设备数据(生产者)和其他订阅这些消息的消费者(消费者).因此,两者都使用相同的websocket URL连接到同一个STOMP代理.通过上述系统实现,客户端将指向HAProxy进行websocket连接.

最佳答案 刚刚对此进行了更新,我通过创建上述设置进行了实验,并且它工作正常,即我能够使用RabbitMQ代理连接到websocket stomp服务器/发送/接收数据,并使用所述的HAProxy负载平衡. Spring中配置的代理主机/端口指向HAProxy,后者又将请求转发给RabbitMQ后端.类似地,websocket客户端通过HAProxy连接到Spring STOMP websocket服务器应用程序.

点赞