2011-07-18 96 views
0

這是我的頻道設置:發佈 - 訂閱錯誤處理策略

  1. 一個JDBC消息存儲備份隊列
  2. 隊列連接到發佈 - 訂閱通道
  3. 輪詢器橋配置在pub-sub頻道上是事務性的

現在,如果在任何一個訂閱者中引發異常,那麼事務回滾並且消息將被重試。該消息再次由所有訂戶處理。如果這在至少是用戶中是一個永久的異常,那麼這個消息不會被其他用戶處理。

這裏最好的異常處理策略是什麼?
我更喜歡對訂閱者進行異常處理,即只有失敗的訂閱者會重試,其他訂閱者纔會處理該消息並繼續前進。

這怎麼能在春季集成中實現?

更多細節在這裏..

  1. 如果輪詢由交易和消息在用戶中的至少一個失敗處理,則該消息被回滾到郵件存儲和重試。我還爲errorChannel配置了一個jdbc消息存儲。每次消息處理失敗時,消息都會回滾到原始消息存儲,並且錯誤通道消息存儲每次重試都有一個條目。

  2. 如果輪詢器是非事務性的,並且消息在第一個訂閱者處理失敗,則消息將被放入錯誤通道,但第二個訂閱者永遠不會收到消息。

看起來有一些根本性的錯誤。是否與我的配置?

回答

0

http://forum.springsource.org/archive/index.php/t-75000.html
上述線程中的討論解釋了框架在pubsub impl方面的優缺點。

我們選擇使用下面的方法: 1.輪詢將是事務性的,意味着所有訂閱者都成功處理消息或不處理消息。消息將重試所有潛艇,直到所有潛艇完成成功。

  1. 錯誤處理是用戶的責任

  2. 只有系統異常會起泡回輪詢。業務異常將由訂戶處理,並且該消息將手動置入某個錯誤通道。