我使用@enablescheduler和@scheduler(cron=)创建了一个javaspring引导调度器服务,需要在集群上运行这个服务。有人可以帮助我如何创建集群负载平衡的应用程序。
qvsjd97n1#
实际上,您需要确保一旦在一个节点上启动了计划任务,集群中的其他节点就被阻止执行相同的任务。您可以使用shedlock来实现此目的。您需要创建一个名为shedlock的数据库表,它应该包含以下属性:name、lock\u at、lock\u until、locked\u by(node)。然后创建如下计划任务:
@Scheduled(chron="..") @SchedulerLock(name="..", lockAtLeast="..") public void scheduledTask() { LockAssert.assertLocked(); //do something }
有关更多文档,请尝试shedlock
1条答案
按热度按时间qvsjd97n1#
实际上,您需要确保一旦在一个节点上启动了计划任务,集群中的其他节点就被阻止执行相同的任务。
您可以使用shedlock来实现此目的。您需要创建一个名为shedlock的数据库表,它应该包含以下属性:name、lock\u at、lock\u until、locked\u by(node)。
然后创建如下计划任务:
有关更多文档,请尝试shedlock