方法执行重试

时间:2018-08-23 09:57:29

标签: java loops

如果启动过程中发生错误,我想尝试重新运行我的应用程序。

这是我的方法:

while(true) {
    try {
        SpringApplication.run(StatisticsApplication.class, args);    
    } catch (Exception e) {
        SpringApplication.run(StatisticsApplication.class, args);
        throw new RuntimeException("Could not execute getConnection().", e);
    }
}

可悲的是,它无法正常工作。如果应用启动失败,它将再次重新启动一次,然后退出。

1 个答案:

答案 0 :(得分:4)

我强烈建议您不要使用当前风险很大的方法。

我建议您改用 Spring Retry documentation

  

该项目为Spring提供了声明式重试支持   应用程序。在Spring Batch,Spring Integration,Spring中使用   用于Apache Hadoop(以及其他)。

     

快速入门

     

示例:

@Configuration
@EnableRetry
public class Application {

    @Bean
    public Service service() {
        return new Service();
    }

}

@Service
class Service {
    @Retryable(RemoteAccessException.class)
    public void service() {
        // ... do something
    }
    @Recover
    public void recover(RemoteAccessException e) {
       // ... panic
    }
}

这是有关如何使用Spring Retry的另一指南: