2016-07-19 7 views

Antwort

1

Nein, Sie können einen Wiederholungsratschlag nicht zusammen mit anderen verwenden. Die <request-handler-advice-chain> Strategie besteht darin, einen Rat in einen anderen mit der Reihenfolge zu überführen, wie sie innerhalb der <request-handler-advice-chain> konfiguriert sind. Also, wenn Sie eine retryAdvice und dann eine andere erklären, wird die erste nicht erreicht, bis die zweite ihre Arbeit beendet.

sehe ich nicht das ganze Bild noch, wie einfach Ihre Anforderungen zu erreichen, aber ich wirklich sicher, dass Sie mit benutzerdefinierten RetryPolicy umgehen sollten, in dem Sie eine Ziel Ausnahme über erreichen:

public boolean canRetry(RetryContext context) { 
    Throwable t = context.getLastThrowable(); 
    ... 
} 

beachten zu diesem nützlichen RetryContext Objekt.

Es gibt auch interessierten Hook als RetryListener Abstraktion, mit der Sie einige zusätzliche Attribute in das RetryContext setzen können. Zum Beispiel in der SI RequestHandlerRetryAdvice:

public <T, E extends Throwable> boolean open(RetryContext context, RetryCallback<T, E> callback) { 
    context.setAttribute("message", messageHolder.get()); 
    return true; 
} 
+0

Meinst du ExceptionClassifierRetryPolicy? Wenn ja, muss ich es mit meiner benutzerdefinierten Klasse überschreiben oder kann ich es in XML konfigurieren? –

+0

1. Sie müssen Ihre eigene 'RetryPolicy' implementieren. Ja 'ExceptionClassifierRetryPolicy' kann als Beispiel für Sie dienen. 2. Sie können es im XML später als reguläres '' konfigurieren und es in 'RetryTemplate' Bean injizieren. –

Verwandte Themen