2011-12-08 40 views
2

技術:的Weblogic /消息驅動Bean處理問題

java的EE,Weblogic的10.3,JMS

場景:

EJB模塊,說Module_1,與驅動Bean 3個不同的消息(MDB)類監視3個不同的Java消息隊列(JMS)。消息不斷地被添加到這些bean中。

問題:

每天一次,在某個時刻,我需要重新啓動整個Weblogic Server的,而不會丟失任何信息。此外,還有另一個模塊部署在此服務器上,如Module_2。我需要確保Module_2在Module_1之前啓動。

如果在預定義的關閉時間任何MDB正在處理任何消息,那麼我想我將不得不等待它完成。不確定。

有人可以建議任何標準的方法/配置來實現這個目標嗎?

另外,如果Weblogic服務器直接重新啓動而沒有任何注意,該怎麼辦?這將如何影響仍處於隊列中的消息以及正在處理中的消息?

謝謝。

回答

1

模塊啓動的順序是一個配置參數:檢查config.xml中的<deployment-order>10200</deployment-order>。編號較低的模塊在較高編號的模塊之前部署。

至於關機,您需要執行「正常關機」(http://docs.oracle.com/cd/E13222_01/wls/docs81/adminguide/overview_lifecycle.html#1045901)。這應該使隊列停止接受新消息,確保所有消息都被保留,然後等待任何正在處理的消息。只有這樣它纔會停下來。

如果您在發生嚴重故障後重新啓動,將會重新處理正在傳送的消息,因爲它沒有正確完成。通常,這是預期的行爲。