Sha*_*man 8 jboss cluster-computing java-ee websocket wildfly
我们正在开发一个包含一些基本聊天/消息传递功能的应用程序.Web应用程序部署在Wildfly 8.x上,并使用标准的JavaEE 7库(而不是像Spring这样的其他应用程序框架)我们正在利用Websockets来实现这一目标,因为我们需要推送到浏览器的功能提供.但是,我们正在以群集/ HA配置部署此Web应用程序.如果UserA连接到NodeA并传入一条发往连接到NodeB的UserB的消息,我们如何传输此消息?
在单节点配置中,简单的答案是维护静态Map或List具有所有Websockets和会话,并根据消息目标路由到适当的Websocket.但是,有多个节点显然无法工作,因为静态Map/ List是每个JVM.
我们将如何实现这一目标?是否可以使用JMS并让每个Websocket充当JMS侦听器?这对资源利用率或可扩展性和性能有何影响?
我们对如何解决这个问题感到有点失落,并且非常感谢你能给出的任何建议.
您可以通过两种方式执行此操作
1) 您可以在不同的Web服务器上创建单独的推送服务,使发布者和订阅者监听该服务。使用此推送服务作为代理,也就是说,每当发布者准备好要推送的数据时,他们就会将其推送到此服务,然后代理将数据广播到所有订阅者。
2)您可以在单独的JVM上创建JMS队列,使发布者和订阅者监听此服务。使用此 JVM 服务作为代理。
您还可以将此服务用于其他目的,例如保护消息、维护会话、存储消息以供将来在目标接收者无法接收消息时传送。
然而,使用该模型的缺点是它会给您的应用程序设置增加更多的维护开销。
| 归档时间: |
|
| 查看次数: |
1148 次 |
| 最近记录: |