2011-07-19 25 views
1

我想要一個MDB,只有在達到兩個獨立狀態後纔會觸發。例如:由於兩個事件而產生消息驅動bean'fire'?

事件A發生 經過一段時間 事件B發生 MDB的onMessage被稱爲例如被清除

所以發生 A和B的事件A和B兩者事件的結果,如果事件B發生但事件A沒有發生,我不想onMessage觸發。同樣,如果事件A發生但事件B沒有發生,我不想讓onMessage觸發。我還希望將事件A和B關聯起來,以便在onMessage被觸發時事件A和B被清除。

要做到這一點的一種方法是讓事件A產生一條消息,並且它的消息處理程序將檢查是否發生了事件B,但它必須阻塞並循環,直到事件B發生。投票計劃似乎效率低下。

在功能上,這將像CyclicBarrier一樣工作,但是通過消息傳遞實現。

對於這樣的事情是否可以使用MDB有什麼想法?

回答

1

對此沒有內建機制。我建議將增量狀態存儲在數據庫表中(接收到第一個事件時插入,當收到第二個事件時更新/刪除)。

我肯定不會推薦投票;有太多可能出錯的事情(掛起服務器線程,浪費CPU,事務超時等)。

相關問題