Метка доступна в атрибуте RetryContext.NAME
в контексте.
@Component
class Foo {
private static final Logger log = LoggerFactory.getLogger(Foo.class);
@Retryable(label = "myLabel")
public void retriable() {
log.info("Here with label: " + RetrySynchronizationManager.getContext().getAttribute(RetryContext.NAME));
throw new RuntimeException("test");
}
@Recover
public void recover(Exception e) {
log.info("Recovered");
}
}
Контекст доступен в методах слушателя.
В 1.3 есть новая функция .
1.3 еще не выпущен, но есть моментальный снимок 1.3.0.BUILD-SNAPSHOT в репозитории моментальных снимков репозитория https://repo.spring.io/snapshot.
Это также дает вам доступ к вызову метода.
@Component
class MyRetryListener extends MethodInvocationRetryListenerSupport {
private static final Logger log = LoggerFactory.getLogger(MyRetryListener.class);
@Override
protected <T, E extends Throwable> boolean doOpen(RetryContext context,
MethodInvocationRetryCallback<T, E> callback) {
log.info("Invocation of method: " + callback.getInvocation().getMethod().toGenericString()
+ " with label: " + callback.getLabel());
return super.doOpen(context, callback);
}
}
@Component
class Foo {
private static final Logger log = LoggerFactory.getLogger(Foo.class);
@Retryable(label = "myLabel")
public void retriable() {
log.info("Here");
throw new RuntimeException("test");
}
@Recover
public void recover(Exception e) {
log.info("Recovered");
}
}