问题描述
我的设计如下:
- 机器1
- WebsocketApp
- ActiveMQ经纪人
- 机器2
- WebsocketApp
- ActiveMQ经纪人
- 机器3
- WebsocketApp
- ActiveMQ经纪人
- 机器4
- WebsocketApp
- ActiveMQ经纪人
客户端将通过F5负载平衡器在WebSockets上使用STOMP,以连接到ActiveMQ代理。它们可以根据负载系数降落在任何机器上。
对于故障转移方案,我们如何在ActiveMQ之间共享Web套接字会话。否则,如果经纪人失败,则其持有的所有会话都将失败。
解决方法
STOMP是一个非常简单的协议。它不支持故障转移。
如果在您的环境中与STOMP客户端连接的代理断开,则该客户端的连接将断开,并且该代理上的所有消息都将不可用,直到代理重新启动为止。客户端将需要通过F5 URL重新连接到另一个代理。
STOMP连接与HTTP不同。他们是有状态的。客户端之间的客户端“会话”数据不共享。如果客户的经纪人崩溃了,那么它就无法简单地进行下去,就好像在HTTP用例中通常没有发生任何事情一样。