Spring 在没有 spring 申请的情况下重试
Spring retry without spring application
我有一个 java 应用程序,它从主 class(不是 Spring 启动应用程序)启动。我想在连接丢失时使用 Spring retry 重试。
据我所知,我需要在 Spring 应用程序中的主要 class 上方添加 @EnableRetry 注释,然后在我的方法上方使用 @Retryable 进行重试。但我认为它不会在非 spring 应用程序中工作。
是否可以在简单的 java 应用程序(不是 spring 应用程序)中使用 spring 重试?
我发现我可以使用 RetryTemplate:
RetryTemplate retryTemplate = new RetryTemplate();
FixedBackOffPolicy fixedBackOffPolicy = new FixedBackOffPolicy();
fixedBackOffPolicy.setBackOffPeriod(2000l);
retryTemplate.setBackOffPolicy(fixedBackOffPolicy);
SimpleRetryPolicy retryPolicy = new SimpleRetryPolicy();
retryPolicy.setMaxAttempts(5);
retryTemplate.setRetryPolicy(retryPolicy);
retryTemplate.execute(new RetryCallback<Void, Throwable>() {
@Override
public Void doWithRetry(RetryContext context) throws Throwable {
// do some job
if(context.getRetryCount() < 3){ // unexpected disconnection
log.error("connection failed");
throw new RuntimeException("retry exception");
}
System.out.println("RETRY" + context);
return null;
}
});
我有一个 java 应用程序,它从主 class(不是 Spring 启动应用程序)启动。我想在连接丢失时使用 Spring retry 重试。 据我所知,我需要在 Spring 应用程序中的主要 class 上方添加 @EnableRetry 注释,然后在我的方法上方使用 @Retryable 进行重试。但我认为它不会在非 spring 应用程序中工作。 是否可以在简单的 java 应用程序(不是 spring 应用程序)中使用 spring 重试?
我发现我可以使用 RetryTemplate:
RetryTemplate retryTemplate = new RetryTemplate();
FixedBackOffPolicy fixedBackOffPolicy = new FixedBackOffPolicy();
fixedBackOffPolicy.setBackOffPeriod(2000l);
retryTemplate.setBackOffPolicy(fixedBackOffPolicy);
SimpleRetryPolicy retryPolicy = new SimpleRetryPolicy();
retryPolicy.setMaxAttempts(5);
retryTemplate.setRetryPolicy(retryPolicy);
retryTemplate.execute(new RetryCallback<Void, Throwable>() {
@Override
public Void doWithRetry(RetryContext context) throws Throwable {
// do some job
if(context.getRetryCount() < 3){ // unexpected disconnection
log.error("connection failed");
throw new RuntimeException("retry exception");
}
System.out.println("RETRY" + context);
return null;
}
});