我有一个Java应用程序,它从主类开始(不是Spring Boot应用程序)。而且我想使用Spring retry在连接丢失时重试。据我所知,我需要在Spring应用程序的主类之上添加@EnableRetry批注,然后在我的方法之上使用@Retryable进行重试。但是我认为这在非Spring应用程序中将不起作用。是否可以在简单的Java应用程序(而非spring应用程序)中使用spring retry?
我发现我可以使用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; } });