我正在设计一个系统,其中从设备生成的大量实时数据最好通过websockets传输给用户。我决定使用Spring STOMP Websockets,因为它更快地设置,理解并且开箱即用,如RabbitMQ和Security。而且因为计划是将Spring用于另一个REST API,所以Spring作为技术堆栈的选择。 RabbitMQ是我决定使用的消息代理。但是我找不到关于如何扩展这样一个系统的大量指导。
我想到的可能解决方案是:
由于我之前没有Websockets的经验,我想获得有关此解决方案听起来是否正确或者我在这里缺少什么的指导?
注意:在此系统中,消息生成者和使用者实际上都是websocket Java客户端。我从https://github.com/nickebbutt/stomp-websockets-java-client获取了示例代码并创建了两个单独的客户端 - 一个只发送消息,即设备数据(生产者)和其他订阅这些消息的消费者(消费者)。因此,两者都使用相同的websocket URL连接到同一个STOMP代理。通过上述系统实现,客户端将指向HAProxy for websocket connection。
答案 0 :(得分:1)
刚刚对此进行了更新,我通过创建上述设置进行了实验,并且它工作正常,即我能够使用RabbitMQ代理连接到websocket stomp服务器/发送/接收数据,并使用所述的HAProxy负载平衡。 Spring中配置的代理主机/端口指向HAProxy,后者又将请求转发给RabbitMQ后端。同样,websocket客户端通过HAProxy连接到Spring STOMP websocket服务器应用程序。