在Spring启动时在DB中执行任务异步

时间:2017-08-08 17:09:28

标签: java spring-boot

我试图让我的spring启动应用程序在没有连接到db的情况下启动。 this question中的方法似乎非常有前途,但是,我的应用程序执行CommandLineRunner,它在启动时执行一些数据库维护(验证所有索引都已到位等)。为了避免在那里超时,我尝试异步运行CommandLineRunner方法(使用Spring {#1}}),尝试获取数据库连接,直到成功为止,但我是仍然有超时异常。我假设@Async方法的异步执行不起作用。

有关此的任何提示吗?

1 个答案:

答案 0 :(得分:0)

您可以重构以使用scalac -version | awk '{print $4}' 安排CommandLineRunner内的任何功能,并在将来安排足够的时间以避免超时。如果维护未按预期运行,则在故障时您可以正常关闭弹簧引导应用程序。

https://docs.spring.io/spring/docs/current/spring-framework-reference/html/scheduling.html#scheduling-task-scheduler

  

最简单的方法是名为' schedule'只需要一个Runnable和Date。 这将导致任务在指定时间后运行一次。所有其他方法都能够安排任务重复运行。固定速率和固定延迟方法用于简单的定期执行,但接受触发的方法更灵活。