当springboot app启动时,检查取决于服务是否可用

时间:2017-08-08 01:23:03

标签: postgresql jpa

我现在面临一个问题,我在JPA上编写了一个springboot微服务基础来公开一些表并为它提供CRUD restful api。

但现在我必须检查我的服务的依赖性,例如postgresql服务器已经准备好(在K8s环境中部署在docker中并作为具有可用主机名和端口的pod运行),如果postgresq已启动,我还需要检查数据库是否已由postgresql服务器中的某些shellcript创建。

如果检查失败,我的微服务应暂停并稍后再次重试(可能在几分钟之后),当postgresql准备就绪(服务器已启动,数据库已创建)时,myservice正常启动,提供者服务正常。

我想知道任何最佳实践可以达到这个目的吗?

1 个答案:

答案 0 :(得分:0)

当我提出这个问题时,我没有得到实施此问题的最佳做法。

经过一些研究,我相信我们应该确保postgresql数据库服务已准备就绪,并且当postgresql容器启动时它会自动启动数据库,例如一些shellcript。

然后在postgresql容器启动后,我的微服务可以使用JDBC连接到这个数据库实例,并使用flyway或其他数据库启动工具集成在spring-boot框架中来创建表并插入现成的数据。

微服务不是处理数据库创建的好地方。