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