我如何使用 @Retryable(label="...") 进行日志记录或监控?
How can i use @Retryable(label="...") for logging or monitoring purposes?
我有一个用
注释的简单可重试方法
@Retryable(label = "myLabel")
根据文档,应该是
A unique label for statistics reporting
RetryListener 中是否可以访问此标签?我该如何使用它?
标签在上下文的 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 尚未发布,但在 spring 快照存储库 https://repo.spring.io/snapshot.
中有快照 1.3.0.BUILD-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");
}
}
我有一个用
注释的简单可重试方法@Retryable(label = "myLabel")
根据文档,应该是
A unique label for statistics reporting
RetryListener 中是否可以访问此标签?我该如何使用它?
标签在上下文的 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 尚未发布,但在 spring 快照存储库 https://repo.spring.io/snapshot.
中有快照 1.3.0.BUILD-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");
}
}