Spring Boot AWS Cluster实例调度程序

时间:2019-02-08 02:00:03

标签: spring-boot scheduled-tasks

我有一个spring-boot应用程序,该应用程序接收用户的请求并将数据保存在db中。

保存数据需要进行某些集成调用。因此,我认为应该每15分钟执行一次调度程序任务,该任务应该选择此数据并进行必要的调用。

但是我的应用程序正在2个实例上部署在AWS EC2中。因此,此调度程序进程将在两个实例上运行,这将导致重复的集成调用。

关于如何避免重复通话的任何建议。

到目前为止,我没有任何可共享的代码。

请分享您的想法...谢谢。

1 个答案:

答案 0 :(得分:1)

似乎在这里回答了类似的问题:Spring Scheduled Task running in clustered environment

我的看法: 1)简单-您可以将排定的进程移到与处理请求流量的进程不同的实例上,并且仅在一个实例上运行它,如果可以的话,可以在“作业服务器”上运行。

2)具有最大的可伸缩性-在两个实例上安排了计划的任务,但是它们将以某种方式必须同步谁处于活动状态和谁处于待机状态(也许与诸如AWS Elasticache这样的缓存)同步。或者,您可以切换到使用具有JDBCJobStore持久性的Quartz作业调度程序,它可以协调2个实例中的哪个实例来运行作业。 http://www.quartz-scheduler.org/documentation/quartz-2.x/tutorials/tutorial-lesson-09.html