2011-07-19 5 views
1

私は2つの独立した状態に達した後にのみ起動するMDBを持っていたいと思います。たとえば:2つのイベントの結果として、メッセージ駆動型Bean 'fire'がありますか?

イベントAは、いくつかの時間が イベントBを渡し 発生 MDBのonMessageは、例えばので

をクリアされ AとBのイベントを発生し、両方のAとBイベントの結果として呼び出され起こるイベントBの場合イベントAが発生していない場合は、onMessageがトリガーされないようにします。同様にイベントAが発生してもイベントBが発生していない場合、私はonMessageを起動させたくありません。また、イベントAとBを関連付けて、onMessageが起動されたときにイベントAとイベントBがクリアされるようにします。

これを行う1つの方法は、イベントAにメッセージを生成させ、そのメッセージハンドラでイベントBが発生したかどうかをチェックして、イベントBが発生するまでブロックしてループする必要があります。ポーリング方式は非効率的であるようです。

機能的には、これはサイクリックバリアのように動作しますが、メッセージングで実装されます。

このようなことがMDBで可能かどうかについては何か考えていますか?

答えて

1

これのためのメカニズムはありません。 DBテーブルに増分状態を格納することをお勧めします(最初のイベントが受信されると挿入、2番目のイベントが受信されると更新/削除されます)。

私は間違いなくポーリングをお勧めします。間違ったこと(サーバースレッド、CPUの無駄使い、トランザクションタイムアウトなど)が多すぎることがあります。

関連する問題