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

Spring批处理限制作业执行

庄兴发
2023-03-14

我的spring批处理应用程序运行在连接到MySQL数据库(单实例)的PCF平台上,只有一个实例启动时运行良好

共有1个答案

寇升
2023-03-14

对我来说,抛出DuplicateKeyException是一个好迹象。因为它确实实现了您想要做的事情,spring批处理已经确保相同的作业执行不会并行执行。(即,只有一个服务器实例成功执行作业,而另一个服务器实例无法执行)

所以我看不出你的情况有什么坏处。如果你不喜欢这个异常,你可以抓住它,并把它作为你的应用程序级异常重新抛出,比如“这个作业正在由其他服务器实例执行,所以跳过来执行它。”

如果您真的希望只有一个服务器实例会尝试触发以执行作业,而其他服务器不会同时尝试触发,那么这不是spring batch的问题,而是如何确保在分布式环境中只有一个服务器节点触发请求的问题。如果批处理作业使用“代码> >计划< /代码>作为计划任务被触发,则可以考虑使用分布式锁(例如SeDLoCK)来确保它最多只在一个节点上同时执行一次。

 类似资料:
  • 我有以下工作要处理在一定的时间间隔或特别的基础上。 作业中的步骤如下: 我也想要用户界面,在那里我可以触发一个特别的基础上的工作,而且我应该能够提供参数从用户界面。 我想用Spring batch来完成这个任务,但它更多的是用于读->处理->写之类的工作。这里,在第一步中,我正在生成由第二步读取的数据。我不确定我是否还可以使用Spring batch来实现这个,或者有更好的方法来实现这个。

  • 我正在做简单的Spring批量工作。当我启动作业时,它在无限循环中运行。它不会停止。根据我的时间表,它应该每10秒运行一次。但当工作开始时,它不会停止。它只是分别从读卡器、处理器和写入器打印系统输出。我正在为读者、处理者和作者创造工作机会。我正在按注释进行所有配置。不是通过xml。 下面是批处理配置 PersonReader。JAVA 人Writer.java 个人处理器。JAVA

  • 问题: 我正在为我的一个spring批处理作业方法编写单元测试。我使用mockito来模拟我的批处理作业依赖关系。在jobExecution发挥作用之前,一切都很好。我要测试的方法调用了jobExecution变量,但它给了我NPE(NullPointerException)并且我没有成功地用mockito模拟它。 删除此currentJobExecution时 从我要测试的方法,然后测试成功完成

  • 我已经开始探索Spring Batch,并遇到了一些基本问题。