当 springboot 应用程序启动时,检查依赖于服务是否可用



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

但是现在我必须检查我的服务的依赖关系,例如 postgresql 服务器是否已准备就绪(部署在 K8s env 的 docker 中,并作为具有可用 ingres 主机名和端口的 pod 运行(,如果 postgresq 已启动,我还需要检查数据库是否已由 postgresql 服务器中的某个 shellscript 创建。

如果检查失败,我的微服务应该挂起并稍后重试(可能在几分钟后(,当 postgresql 准备就绪(服务器已启动,数据库已创建(myservice 正常启动并根据需要提供服务。

我想知道任何最佳实践可以存档此目的?

当我问这个问题时,我没有实现这一点的最佳实践。

经过一些研究,我认为我们应该确保 postgresql 数据库服务已经准备就绪,并且它在 postgresql 容器启动时自行启动数据库,例如一些 shellscript。

然后在 PostgreSQL 容器启动后,我的微服务可以使用连接到此数据库实例的 JDBC,并使用 Flyway 或其他已集成在 Spring 启动框架中的数据库启动工具来创建表并插入开箱即用的数据。

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

最新更新