Java 用于创建计划程序以获取通知的设计
我必须创建一个独立的JavaSpring启动应用程序“MyApplication”。此应用程序对多个应用程序执行运行状况检查,并在任何服务运行状况下降时向收件人发送通知 我正试图集思广益,想出最好的方法来实现这一点 注意,“MyApplication”中的每个应用程序都可以在不同的环境中运行,如DEV、QA、Prod,对于每个环境,我们必须向不同的人发送通知。此外,我们可以在application.yaml中支持任意数量的应用程序 在“MyApplication”应用程序中,我们可以有一个application.yamlJava 用于创建计划程序以获取通知的设计,java,spring,multithreading,spring-boot,Java,Spring,Multithreading,Spring Boot,我必须创建一个独立的JavaSpring启动应用程序“MyApplication”。此应用程序对多个应用程序执行运行状况检查,并在任何服务运行状况下降时向收件人发送通知 我正试图集思广益,想出最好的方法来实现这一点 注意,“MyApplication”中的每个应用程序都可以在不同的环境中运行,如DEV、QA、Prod,对于每个环境,我们必须向不同的人发送通知。此外,我们可以在application.yaml中支持任意数量的应用程序 在“MyApplication”应用程序中,我们可以有一个app
applications:
// Application 1
// Dev
app_1_dev:
healthcheck_endpoint: app1_healthcheck_URL
recipients: app1_user1, app1_user2
// QA
app_1_qa:
healthcheck_endpoint: app1_qa_healthcheck_URL
recipients: app1_user1, app1_user2, app1_user3
// Prod
app_1_prod:
healthcheck_endpoint: app1_qa_healthcheck_URL
recipients: app1_user1, app1_user2, app1_user3
// Application 2
// Dev
app_2_dev:
healthcheck_endpoint: app2_healthcheck_URL
recipients: app2_user1, app2_user2
// QA
app_2_qa:
healthcheck_endpoint: app2_qa_healthcheck_URL
recipients: app2_user1, app2_user2, app2_user3
// Prod
app_2_prod:
healthcheck_endpoint: app2_qa_healthcheck_URL
recipients: app2_user1, app2_user2, app2_user3
我的想法是,我们可以有一个每1小时运行一次的调度器,然后它可以从application.yaml读取每个部分,比如:
app_2_dev:
healthcheck_endpoint: app2_healthcheck_URL
recipients: app2_user1, app2_user2
在healthcheck_端点上发送GET请求,检查运行状况,并在失败时向相应的收件人发送通知
我们可以在Jenkins上运行此应用程序,Jenkins将继续运行此应用程序
问题1:这是一个好方法吗
问题2:我看到了一些陷阱。如果其中一个服务关闭,我们在59分钟后收到通知,因为调度程序每1小时运行一次,该怎么办?那就太晚了。有什么优雅的方式来处理这种情况吗
问题3:如果我不想在办公时间之后得到关于开发和质量保证环境的通知,比如说下午5:30,但想得到关于产品24/7的通知,该怎么办?在这种情况下,是否应该有两个调度器,一个是运行有限时间的Dev和QA,另一个是运行24/7的Prod
问题4:有没有更好的方法来处理这个问题
如有任何建议,将不胜感激