0

我们最近将 MongoCk 添加到我们的 Spring 5 应用程序(使用 Spring 运行程序),但在我们的部署过程中遇到了一些问题。我们在部署过程中的最后一步是运行状况检查,部署服务器每 5 秒检查一次运行状况页面,持续 5 分钟。一旦它得到正确的响应,就认为部署成功并完成。

问题是 MongoCk 似乎只在应用程序上下文加载后 30 秒左右开始迁移,导致运行状况检查通过,并且在服务“成功”启动后迁移可能失败。

使用独立的运行器可能会解决这个问题,但我们真的很喜欢在变更日志中其他 bean 的可用性。那么有没有办法强制将变更日志作为加载应用程序上下文的一部分进行处理?或者这种延迟来自哪里,我们如何减少它?

4

1 回答 1

0

您没有提供太多信息,但是您说 Mongock 在加载应用程序上下文后 30 秒开始。这可能有两个原因:

  1. 最可能的可能性是您使用的是跑步者类型ApplicationRunner(默认情况下)。这意味着 Spring 在加载整个上下文后决定何时运行它。从你所说的跑步者类型InitializingBean更适合你。请试试这个:
mongock:
  runner-type: InitializingBean

  1. 您有多个实例争夺锁定。我们对此无能为力,这个过程已经过优化(尽管我们正在改进更多)。但是,如前所述,我认为这个问题与跑步者类型有关
于 2021-08-03T09:14:49.453 回答