1

我想要一个只有在达到两个独立状态后才会触发的 MDB。例如:

事件 A 发生一段时间 事件 B 发生 由于 A 和 B 事件同时发生而调用 MDB onMessage A 和 B 事件被清除

因此,例如,如果事件 B 发生但事件 A 尚未发生,那么我不希望触发 onMessage。同样,如果事件 A 发生但事件 B 未发生,我不希望 onMessage 触发。我还希望将事件 A 和 B 关联起来,以便在触发 onMessage 时清除事件 A 和 B。

做到这一点的一种方法是让事件 A 产生一条消息,并且消息处理程序将检查是否发生了事件 B,但它必须阻塞和循环,直到事件 B 被触发。轮询方案似乎效率低下。

从功能上讲,这将像 CyclicBarrier 一样,但通过消息传递来实现。

关于 MDB 是否可以实现这样的事情有什么想法吗?

4

1 回答 1

1

对此没有内置机制。我建议将增量状态存储在数据库表中(收到第一个事件时插入,收到第二个事件时更新/删除)。

我绝对不建议投票;有太多事情可能出错(挂起的服务器线程、浪费的 CPU、事务超时等)。

于 2011-07-19T18:37:25.253 回答