我目前正在处理一个应用程序,该应用程序的设置与以下聊天类推相匹配:
编程设置如下所示:在不同会话中的页作用域seam组件之间共享聊天对象及其消息的实例。现在,当任何会话发布新消息(即修改聊天对象)时,应该将新消息通知所有seam组件,以便在所有客户端上将新状态转发给UI。
我可以想出三种方法来实现这一点:
为了便于论证,假设聊天的数量很大(数万),而聊天用户的数量很小(假设是2-10)。
每个量表的性能如何?你还有什么其他的建议吗?如何用Seam来做这件事,并且表现良好?
在我看来,(1)将是集成和干净的,但最终您会通知数万个组件,其中只有少数组件真正需要它。所以它可能不会放大。
(2)是集成的,只依赖于JMS提供程序的性能(可以交换),并且也可以在集群环境中工作,而不需要修改。我不确定JMS的性能,即每秒有几百条消息和上千个具有不同过滤器的侦听器吗?
(3)将是快速的,因为只会通知所需的组件,并且通知是纯的和直接的java。但是,由于执行了跨会话/组件/线程,可能会出现并发/访问问题。
对于(1)和(3),如果需要的话,必须手动添加支持集群的解决方案。
发布于 2009-09-26 20:32:36
我推荐2)。我还建议将JMS从等式中删除--尽管它将使您能够切换消息提供程序,但也会使您无法使用消息传递系统的更高级功能。如果您使用的是Oracle数据库,AQ会做出明智的选择(它支持JMS .)。否则,我建议使用AMQP,它应该可以通过JBoss消息传递或第三方解决方案(如RabbitMQ )获得。
由于您显然有消息传递问题,所以应该选择使用消息传递解决方案。
https://stackoverflow.com/questions/1482076
复制相似问题