2012-10-19 58 views
0

我遇到了問題,我必須在Web服務上運行非常長的正在運行的進程,現在我正在尋找處理結果的好方法。場景:用戶通過UI執行如此長時間運行的進程。現在他得到了他的要求被接受的消息,並且他稍後應該回來。所以沒有必要向他展示他的請求的狀態或類似的東西。我只是在尋找一種能夠正確處理長時間運行過程的結果的方法。由於進程是外部程序,因此我的應用程序服務器不知道它們。因此我必須等待這些程序終止。當然,我不希望爲此使用EJB,因爲那樣他們就會阻止一段時間沒有結果可用。相反,我想到了使用JMS或Spring Batch。有沒有人有過相同的問題或建議哪種解決方案會更好?針對長時間運行的作業的Spring批處理或JMS

回答

0

這實際上取決於您的外部程序可用的通信方式。 JMS是一種非常好的方法,可立即在您的應用服務器上使用,但如果您的外部程序是一個長時間運行的數據庫查詢,它將結果轉儲爲文本文件,則可能不是最好的選擇...

Spring使用JMS作爲異步通信通道的批處理是「事務性」屬性,允許基礎架構重試失敗的作業,將作業組合在一起等。不知道更多關於您的具體設置,很難給出詳細的建議。

乾杯,

+0

它不是數據庫查詢。該程序需要一個非常大的文件並從該輸入生成一個文件。 – nico1510

+0

我用spring批量閱讀,可以使用資源管理。這將非常有用,因爲我的應用程序服務器不知道產生的外部進程。你有沒有關於如何在春季批量管理的信息? – nico1510

0

我也有類似的設計要求,用戶被髮送XML文件,我不得不從這些網頁文件。在這種情況下使用JMS是有利的,因爲您始終可以添加這些可以並行使用和執行作業的進程的新實例。

您可以使用計時器任務來檢查狀態或監視這些進程。另外,一旦進程完成,您可以將消息發佈到JMS隊列。

+0

但是如果這樣的消息bean沒有返回結果會發生什麼,因爲正在計算結果的進程被卡住了。這不是EJB也可能發生的同樣的問題嗎?你的應用程序中是否也存在這些問題? – nico1510

相關問題