我们有一个应用程序,它在内存中维护HashMap
,由特定用户ID键入,并且具有代表某些系统事件的值。基本功能是用户向Web服务器发出请求,该服务器检查HashMap
是否有任何由其ID键入的事件,否则等待HashMap
上的短时间,直到他们超时或在notify
上执行HashMap
,唤醒客户端并立即处理该事件。
这在单一服务器环境中运行良好,但我们正在转向集群环境,并且不确定处理此特定部分的最佳方法。
认为我们需要利用数据库来排队这些事件并从wait/notify
中丢失即时回调效果,除非有可能以某种方式使用Singelton服务功能实现这一点。使用Singleton Service,我们能够从一台服务器上等待一个对象,并通过集群中另一台服务器上的一个线程获得通知吗?
答案 0 :(得分:2)
我建议您使用JMS。 JMS对群集友好,也可以配置为将事件持久保存在文件存储或数据库中。您还可以从2个模型中进行选择:队列或主题,具体取决于您的用户需要处理的方式。