【问题标题】:Spring 4 websocket + stomp + rabbitmq and clusteringSpring 4 websocket + stomp + rabbitmq 和集群
【发布时间】:2016-02-16 05:39:01
【问题描述】:
我正在经历 Spring 4 websocket + stomp + rabbitmq(RabbitMQ-Web-Stomp 插件) 架构,我有一个关于集群的问题。根据我的理解,Spring MVC 充当 STOMP 请求的网关。如果我们使用 Spring Web 套接字配置对应用程序实例进行集群,会不会造成任何混乱?例如,它会打开多个侦听器吗?在这种情况下,该架构将如何表现?
【问题讨论】:
标签:
spring
spring-mvc
rabbitmq
stomp
spring-websocket
【解决方案1】:
在这种情况下,您需要使用负载平衡和消息代理。我使用 HAProxy 来负载平衡 4 个运行在 4 个 tomcat 服务器上的 Spring MVC 实例(websocket)。还将rabbit mq配置为代理。从客户端代码连接到单个 HAProxy url。
如果您不使用消息代理,那么 websocket 客户端订阅将保留在应用程序/网络服务器 (tomcat) 的 JVM 中,如果一个实例出现故障,则该实例上的所有订阅都将丢失。