@Component public class LogRetryListener implements RetryListener { private static final Logger log = LoggerFactory.getLogger(LogRetryListener.class); @Override public <T, E extends Throwable> boolean open(RetryContext context, RetryCallback<T, E> callback) { log.info("开始执行: {}, 重试次数: {}", context.getAttribute("context.name"), context.getRetryCount()); return true; } @Override public <T, E extends Throwable> void onError(RetryContext context, RetryCallback<T, E> callback, Throwable throwable) { log.warn("执行失败,第 {} 次重试, 异常: {}", context.getRetryCount(), throwable.getMessage()); } @Override public <T, E extends Throwable> void close(RetryContext context, RetryCallback<T, E> callback, Throwable throwable) { if (throwable != null) { log.error("所有重试都失败了: {}", throwable.getMessage()); } else { log.info("执行成功,共重试 {} 次", context.getRetryCount()); } } }
|