2013-03-05 76 views
0

我的問題如下: 我有一個服務,它查詢數據庫並檢索一些記錄。然後使用該信息更新外部系統,最後更新數據庫。Spring - JMS - DB

使用Spring trascations和WebLogic JTA事務管理器,我是能夠與下面沒有樣本代碼的情況下,

  1. 沒有記錄retrived鬆動的任何消息。 (這些都是強制性的外部系統)
  2. 外部系統錯誤
  3. 無法更新DB

所以在所有aboce情況下,JMS偵聽器會將errror消息回到隊列。

我的問題,有沒有更好的方法,使用Spring的所有好東西來管理?下面的示例代碼拋出explicilty一個RuntimeException,我不認爲這是一個好的設計...

請爲您的意見。

編輯: 隊列由submissionListener MDP輪詢,其配置如下所示。消息消耗後,它調用服務的registerDocument()。 (另一個Spring bean)。該服務調用了DAO和外部系統的兩倍。

+0

您的submissionDAO正在處理從隊列中讀取數據並寫入數據庫? – SteveD 2013-03-05 15:07:00

回答

1

查看JmsTemplate上的Spring的documentation和核心Spring框架中的模式的消息驅動POJO。

Spring Integration模型與面向消息的模式相關的更高層次的抽象。

+2

很難避免在這些情況下拋出異常,除非您使用自定義邏輯來處理返回失敗狀態。您可以拋出一個自定義異常,而不是更好地捕獲失敗的上下文。 – SteveD 2013-03-05 17:29:34

+0

我同意史蒂夫,你不能避免拋出一個異常 - 但它是更好的做法,創建自己的例外與明確的細節爲您的應用程序。 – ninnemannk 2013-03-05 20:28:35