我们刚刚开始构建我们的 JMS 架构并具有以下基本设置:
- 玻璃鱼 v2.1
- MDB 通过 TopicConnectionFactory 监听一个主题(都在本地服务器上)
现在,当有新消息到达时,MDB 会生成一个工作线程,即使我们已经按顺序传递消息,我们也需要一种同步机制,以便线程在并发处理请求之前检查特定条件。
这些线程有没有办法共享数据?或者是否有任何其他机制(除了数据库表/行锁)可以用于同步?
提前致谢。
澄清一下,我不是在创建自己的线程。正如每个人都正确指出的那样,容器为我做到了。让我用一个例子来帮助解释我的困境。
-消息 A 到达 t=0,它“创建”数据 id 1
-消息 B 到达 t=0.1,它“更新”数据 id 1
现在假设容器产生 2 个工作人员来处理 A 和 B,并且“创建”数据比更新它需要更多的时间,更新将更早处理并且没有效果。
为了更清楚,
-在处理消息 B 时,我会在 t=1 时查找数据 id 1(没有找到它,因此没有做任何事情就完成了)。
- 在 t=2 处理消息 A 时将创建数据 id 1。