【发布时间】:2014-07-15 22:17:08
【问题描述】:
最近我遇到了一个要求,我必须为应用程序提供一个自定义 jar,这个 jar 将包含定期查询数据库并为使用它们的特定应用程序获取消息(记录)的线程。因此,例如应用程序 A 使用此 jar,则 jar 中的线程将仅为应用程序 A 获取所有消息。 该数据库是应用程序之间的共享数据库。
这适用于独立应用程序,但对于部署在企业应用程序服务器(在我的情况下为 weblogic)中的集群上的应用程序,这会失败,因为集群上的所有节点都在它们自己的 JVM 中运行,并且每个节点都为同一个应用程序。因此,可能存在两个线程同时运行并获取相同记录的情况,并且会有双重处理。不能使用同步,因为这会导致性能瓶颈。
我不能使用单例计时器 EJBS。听说过workmanager,但网上没有足够的例子。我正在使用spring核心框架。
如果你们有任何建议,那就太好了。
谢谢。
【问题讨论】:
标签: java multithreading jakarta-ee scheduled-tasks java-ee-6