2014-04-15 46 views
5

根據9.2節中的spring批處理/重試文檔(http://docs.spring.io/spring-batch/reference/html/retry.html),可以指定在使用SimpleRetryPolicy時通過setRetryableExceptions或setFatalExceptions重試或不重試的異常。但是,這些方法在GitHub https://github.com/spring-projects/spring-retry/blob/master/src/main/java/org/springframework/retry/RetryPolicy.java的當前版本(1.0.3)中未定義。spring重試setRetryableExceptions,setFatalExceptions不可用

那麼,這是一個文檔錯誤?如果不是,那麼方法在哪裏?

從源代碼看來,只有可重試異常可以通過構造函數來設置,該構造函數接受異常映射。似乎沒有辦法來定義致命異常。

回答

4

也許這可以幫到你。您必須通過classtype創建一個包含所有可重試異常的映射,並將其添加到策略中。可能與致命的例外類似。

Map<Class<? extends Throwable>, Boolean> r = new HashMap<>(); 
r.put(RetryException.class, true); 
SimpleRetryPolicy p = new SimpleRetryPolicy(MAX_RETRIES, r); 
RetryTemplate t = new RetryTemplate(); 
t.setRetryPolicy(p); 
+0

是的,這與我最終做的相似。我只是在地圖中定義了可重試的異常。任何異常都不會被視爲致命異常。 – user3537621

0

我不得不在我的項目中實現Retry機制,並創建了自己的實現。

Retry using AOP

這就像一個魅力(只有我沒有找到一種方法,但以確保在同一時間實例只是一個方面的實例。)

您只需註釋用你的方法@Retry註釋,提供一些你想要的配置和完成。