Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 用于创建计划程序以获取通知的设计_Java_Spring_Multithreading_Spring Boot - Fatal编程技术网

Java 用于创建计划程序以获取通知的设计

Java 用于创建计划程序以获取通知的设计,java,spring,multithreading,spring-boot,Java,Spring,Multithreading,Spring Boot,我必须创建一个独立的JavaSpring启动应用程序“MyApplication”。此应用程序对多个应用程序执行运行状况检查,并在任何服务运行状况下降时向收件人发送通知 我正试图集思广益,想出最好的方法来实现这一点 注意,“MyApplication”中的每个应用程序都可以在不同的环境中运行,如DEV、QA、Prod,对于每个环境,我们必须向不同的人发送通知。此外,我们可以在application.yaml中支持任意数量的应用程序 在“MyApplication”应用程序中,我们可以有一个app

我必须创建一个独立的JavaSpring启动应用程序“MyApplication”。此应用程序对多个应用程序执行运行状况检查,并在任何服务运行状况下降时向收件人发送通知

我正试图集思广益,想出最好的方法来实现这一点

注意,“MyApplication”中的每个应用程序都可以在不同的环境中运行,如DEV、QA、Prod,对于每个环境,我们必须向不同的人发送通知。此外,我们可以在application.yaml中支持任意数量的应用程序

在“MyApplication”应用程序中,我们可以有一个application.yaml

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:有没有更好的方法来处理这个问题

如有任何建议,将不胜感激