2010-01-05 74 views
3

我有一個企業應用程序,每天大約有2k個併發用戶。這些用戶處理客戶呼叫,因此應用程序速度至關重要。如何實現與J2EE應用程序的異步處理

當用戶打包電話時,他們提交所有捕獲的信息。此提交可能需要10-45秒。

我正在研究如何將延遲從用戶。

我們有一個運行在I.E的web前端。後端是在單個EJB上運行的沉重的Java。

我想讓這個提交過程是異步的,因爲一旦用戶提交請求,他們不必等待提交完成,然後再繼續下一位客戶。這是目前實施的。

本來我只是想產生另一個線程來處理提交,但這是一個不容錯過的EJB。

我能想到的其他選項將使用JMS或SIB,

什麼將最好的解決辦法是什麼?我還缺少另一種選擇嗎?

+2

我可能會去JMS。它爲您提供了異步要求,它對JEE友好,它允許您擴展並提供良好的可靠性。使用SIB更重要的是擁有比RMI更多的互操作協議。 – 2010-01-05 20:14:23

回答

7

對於這種情況,實際上有兩種選擇。

  • 第一個將使用JMS。它的優點是服務器提供了所有必需的基礎設施,而且您不必自己實施太多。
  • 另一種方法是將請求註冊到數據庫中,並有一個計劃好的事件來處理所有這些請求。

您選擇什麼取決於您的要求。如果您需要儘快提供請求,那麼您需要使用JMS。在這兩種情況下,您都需要將請求的結果保存在數據庫中,並在其頂部設計一個Web服務。前端可以使用此(通過輪詢)將結果呈現給用戶。

2

本來希望發表評論,但沒有能力。

另一種可能性:

包裹重EJB在一個隊列機制,並公開提供不同的bean使用相同的API,以便您的面向客戶的溝通交談的新豆,並能夠迅速。他們接受請求,將作業添加到隊列中並立即返回給客戶端。您不需要更改沉重的EJB或客戶端通信,只需添加一箇中介,然後添加一層包裝。