1

2 つの独立した状態に到達した後にのみ起動する MDB が必要です。例えば:

イベント A が発生し、しばらく時間が経過する イベント B が発生する A と B の両方のイベントが発生した結果、MDB onMessage が呼び出される A と B のイベントがクリアされる

たとえば、イベント B が発生してもイベント A が発生していない場合、onMessage をトリガーしたくありません。同様に、イベント A が発生してもイベント B が発生していない場合、onMessage を発生させたくありません。また、onMessage が発生したときにイベント A と B がクリアされるように、イベント A と B を関連付けたいと考えています。

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

機能的には、これは CyclicBarrier のように機能しますが、メッセージングで実装されます。

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

4

1 に答える 1

1

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

ポーリングは絶対にお勧めしません。うまくいかないことが多すぎます (サーバー スレッドのハング、CPU の浪費、トランザクションのタイムアウトなど)。

于 2011-07-19T18:37:25.253 に答える