【发布时间】:2021-06-02 20:45:48
【问题描述】:
我正在开发一个 springboot 项目,该项目具有 REST API 和一些计划任务 (@Scheduled)。目前我们有两台服务器,我想在两台服务器上部署相同的代码。所以,我的要求是,一台服务器应该只服务 API 请求,而其他服务器应该只运行 cron 作业。
如何限制第一台服务器运行 cron 作业。
我可以想到一个解决方案,使用@Profile("{spring.profiles.active}") 标记调度程序类并使用 cron 配置文件进行部署。但我必须在 application.properties 中添加额外的 4 组配置文件。像 cron.prod、cron.dev、cron.qa、cron.stage。所以总共将是 8 组配置文件。
我在这里粘贴我现有的代码。 在 application.properties 中
myservice.lmsurl=${${spring.profiles.active}.myservice.lmsurl}
prod.myservice.lmsurl=https://test.com
qa.myservice.lmsurl=https://test.com
dev.myservice.lmsurl=https://test.com
uat.myservice.lmsurl=https://test.com
在 Appconfiguration.class 中
@Configuration
@ConfigurationProperties("myservice")
public class AppConfiguration {
@NotEmpty
private String lmsurl;
}
任何其他更好的解决方案。
【问题讨论】:
标签: spring spring-boot spring-mvc cron