当前位置: 首页 > 知识库问答 >
问题:

在多个实例中部署时如何避免重复的计划程序任务

拓拔俊德
2023-03-14

有一个Spring引导应用程序,通过它我可以创建一个cron并安排任务。但是,当应用程序的多个实例被部署时,cron会在所有实例中被触发并导致重复。是否有任何配置需要在Spring级别完成?

我们正在使用 redis 并使用可以在其他情况下控制的标志,但需要更好的方法来解决此问题。甚至尝试了雷迪森图书馆,没有多大帮助。

甚至需要在实例关闭时考虑故障转移情况。请帮助。

谢谢

共有1个答案

邢雨华
2023-03-14

看看这篇文章

pom.xml schedlock依赖项中包括:

<dependency>
    <groupId>net.javacrumbs.shedlock</groupId>
    <artifactId>shedlock-spring</artifactId>
    <version>2.2.0</version>
</dependency>

<dependency>
    <groupId>net.javacrumbs.shedlock</groupId>
    <artifactId>shedlock-provider-jdbc-template</artifactId>
    <version>2.1.0</version>
</dependency>

创建< code>shedlock表

CREATE TABLE shedlock(
  name VARCHAR(64),
  lock_until TIMESTAMP(3) NULL,
  locked_at TIMESTAMP(3) NULL,
  locked_by  VARCHAR(255),
  PRIMARY KEY (name)
)

别忘了为你创建的每个工作添加一个名称。

@SchedulerLock(name = "job_name")

这样,当此作业将在多个实例上执行时,作业记录将由第一个实例添加到shedlock表中,所有其他实例将检查shedlock表中是否存在具有所需作业名称的现有记录。这样,作业将只执行一次。

 类似资料:
  • 我正在使用 Kubernetes 作为容器编排器构建一个微服务应用程序。该应用程序现已启动并运行,但我有其他问题。那是在我的服务中,我每天都有一个计划任务运行,当服务部署时,将运行多个服务实例(通过设置副本编号),创建多个同时运行的任务。我期望的是只有一个服务任务实例将运行,而不是多个实例。有什么技术可以处理这种情况吗? 库伯内特斯 Asp.net核心构建微服务 CI/CD的基岩实现 Fabrik

  • 我们有一个Spring Boot应用程序,并有计划的任务。 我们希望在多个服务器上部署我们的应用程序,因此将有多个应用程序实例。 如何将 Spring 配置为仅在指定的服务器上运行计划任务?

  • 我们有一个程序,客户声称文件没有在应该生成的时候生成,只是在一天中很晚才出现。 我想知道这是否是因为任务调度程序的安排。 任务计划在每天下午12:23开始,然后无限期地每5分钟执行一次。 考虑到日程安排,并将其设置为每天运行,在00:00:00-12:23:00的时间内会发生什么? 前一天的日程是否因为“无限期”的设定而一直运行到第二天? 或者,由于任务设置为每天运行,前一天的计划是否在00:00

  • 问题内容: 我有一个这样的表: 我在上具有唯一的B树索引。所以,当我执行这样的查询时: 由于存在现有索引,我希望看到具有索引范围扫描并且没有子句排序顺序(或任何其他类型的排序)的查询计划。其实我有查询计划 结果: 如果我从查询中删除,我将无法按所需顺序获取数据(这对我来说很奇怪,因为默认情况下,B树索引会按升序构建行树,并且在这种情况下,应提供与i相同的查询计划想法) 我该如何避免? Oracle

  • 我使用for循环将学生详细信息添加到ArrayList。当我给第二个学生提供详细信息时,它会覆盖第一个数据。螺柱类 将数据添加到ArrayList的主类。 输出:第二个数据[2,2]后的实际输出辊数[1]。预期输出应为卷号: A1姓名: F1 L1性别:男性年龄: 11体育赛事:标枪 报名号:A2姓名:F2 L2性别:女年龄:14体育项目:100米跑 报名号:A3姓名:F3 L3性别:男性年龄:1

  • 钱箱类: 商户类: 输入数据: 我的任务 计算每个商家的总金额并返回商家列表 我正在尝试使用Stream API解决这个任务。并编写了以下代码: 结果 但显然,流返回四个对象,而不是所需的两个对象。我意识到,地图(第二行)为每个cashBoxId创建了四个对象。而且我不知道如何通过进行过滤,也不知道如何获得没有重复的结果。