2014-04-15 11 views
5

Secondo il lotto primavera/riprovare documentazione (http://docs.spring.io/spring-batch/reference/html/retry.html) nella sezione 9.2 si può specificare quali eccezioni che si desidera riprovare oppure no riprovare in via setRetryableExceptions o setFatalExceptions quando si utilizza il SimpleRetryPolicy. Tuttavia, questi metodi non sono definiti nella versione corrente (1.0.3) in GitHub https://github.com/spring-projects/spring-retry/blob/master/src/main/java/org/springframework/retry/RetryPolicy.java.primavera riprovare setRetryableExceptions, setFatalExceptions non disponibile

Quindi, si tratta di un errore di documentazione? Se no, allora dove si trovano i metodi?

Dal codice sorgente, sembra che solo le eccezioni ripristinabili possono essere impostate tramite il costruttore che accetta una mappa di eccezioni. Non sembra essere un modo per definire le eccezioni fatali.

risposta

4

Forse questo può aiutare. Devi creare una mappa che tenga tutte le eccezioni riprovabili per classe e aggiungila alla politica. Probabilmente simile a eccezioni fatali.

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

Sì, questo è simile a quello che ho fatto. Ho appena definito le eccezioni riprovabili nella mappa. Qualsiasi eccezione non presente nella mappa viene considerata un'eccezione irreversibile. – user3537621

0

Ho dovuto implementare il meccanismo Riprova anche nel mio progetto e ho creato la mia implementazione.

Retry using AOP

Questo funziona come un fascino (solo non ho trovato un modo ancora da garantire che una sola istanza aspetto in un'istanza alla volta.)

Si può solo annotare i vostri metodi con lo @Retry annotation, fornire alcuni config che si desidera e il suo fatto.

Problemi correlati