Spring 4 websocket + stomp + rabbitmq 和集群

Posted

技术标签:

【中文标题】Spring 4 websocket + stomp + rabbitmq 和集群【英文标题】:Spring 4 websocket + stomp + rabbitmq and clustering 【发布时间】:2016-02-16 05:39:01 【问题描述】:

我正在经历 Spring 4 websocket + stomp + rabbitmq(RabbitMQ-Web-Stomp 插件) 架构,我有一个关于集群的问题。根据我的理解,Spring MVC 充当 STOMP 请求的网关。如果我们使用 Spring Web 套接字配置对应用程序实例进行集群,会不会造成任何混乱?例如,它会打开多个侦听器吗?在这种情况下,该架构将如何表现?

【问题讨论】:

【参考方案1】:

在这种情况下,您需要使用负载平衡和消息代理。我使用 HAProxy 来负载平衡 4 个运行在 4 个 tomcat 服务器上的 Spring MVC 实例(websocket)。还将rabbit mq配置为代理。从客户端代码连接到单个 HAProxy url。

如果您不使用消息代理,那么 websocket 客户端订阅将保留在应用程序/网络服务器 (tomcat) 的 JVM 中,如果一个实例出现故障,则该实例上的所有订阅都将丢失。

【讨论】:

以上是关于Spring 4 websocket + stomp + rabbitmq 和集群的主要内容,如果未能解决你的问题,请参考以下文章

Spring 4 - websocket 消息传递 stomp 处理程序

Spring 4 WebSocket 配置端口

Spring 4.0 中的 WebSocket 架构

JavaScript 客户端无法连接到 Spring 4 WebSocket

Spring 4 websocket + stomp + rabbitmq 和集群

Spring-Websockets 4.2 中使用 SockJS 的部分消息