由于两个事件导致消息驱动bean'fire'?

时间:2011-07-19 16:22:55

标签: ejb-3.1 message-driven-bean

我希望有一个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是否可以做出类似事情的想法?

1 个答案:

答案 0 :(得分:1)

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

我绝对不会推荐民意调查;有太多可能出错的事情(挂起的服务器线程,浪费的CPU,事务超时等)。