2014-07-02 29 views
2

我有一個耗時的任務,我想通過將它分成更小的塊並同時處理這些塊來加快速度。由於這將是在Glassfish服務器上運行的EJB作業,因此我必須使用JMS(只要我能想象)。 因此,我將爲每個請求創建9個單獨的消息。這是一個簡單的部分。那些消息將由MDB處理,然後onMessage方法將識別有效載荷頭部消息元素上的每個特定部分。 問題是我無法弄清楚如何收集和存儲結果,直到所有這些結果都準備好將它們結合到響應消息中。 或者其實我可以想象使用臨時文件的解決方案,但我不認爲它是最好的解決方案。這種工作的最佳做​​法是什麼?JMS的併發

回答

1

如果按照描述使用JMS,那麼一種方法是將臨時結果存儲在數據庫表中,並等待所有任務完成以合併結果。

相反,只要您至少使用Java EE 6,就可以使用asynchronous method invocation,它可以代替JMS在一個容器中的許多用途,僅用於異步執行某些操作。使用這種技術,如本教程中所述,您還可以檢索最終結果。

+0

我不必堅持JMS,你的第二個建議是我真正需要的。 – smoczyna