2015-01-06 40 views
0

这可能是一个愚蠢的问题,但请握住枪,因为我已经做了大量的研究,但这一点只是不点击我的脑海。使用JMS或Redis集群弹簧web应用程序

假设我有一个spring mvc web应用程序,用户可以使用websockets或任何其他机制来订阅它...我们得到一个连接对象,例如HttpSession,DeferredResult,AtmosphereResource等,然后我们制作一个本地地图存储此暂停的连接...现在,当我们需要发送更新时,我们只需从内存映射中挑选它并发送更新。

现在,如果我有一个tomcat群集,并且用户可以连接到任何节点,他们如何共享这些暂停的连接呢?这不是一个会话复制问题我不会在会话中存储任何东西我只需要有一种方法来连接回客户端...

如果这是一种错误的思维方式,那么如何使集群环境工作?用户连接到任何节点,并且该节点关闭时会发生什么?

任何帮助非常感谢我非常渴望这一点,因为我们的项目被困在关键阶段。

回答

0

它看起来像你想一下子解决很多问题:

  • 如何在集群环境中管理WebSocket连接?
  • 如何管理服务器端的心跳,(dis)连接事件?
  • 如何管理客户端的心跳,(dis)连接事件?
  • 如何使用Spring高效地驱动消息传递驱动的应用程序?
  • 更多...

Spring 4 introduced websocket support非常酷的功能,回答了很多你的问题。 在集群环境中,Spring推荐一个MQ实例(支持STOMP),比如RabbitMQ。此MQ将管理主题订阅和消息分发,而每个tomcat将管理客户端连接。

有几个示例应用程序显示了它的工作原理:portfolio appchat app