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

失败步骤的Spring批处理作业退出状态

马华茂
2023-03-14

我最近使用Spring Batch 2.2.0将一个旧的应用程序升级到3.0.5。我对DB表进行了必要的更改,并对一些与参数API相关的微小代码进行了更改。

现在,当我运行应用程序时,它正在工作,但是如果一个步骤的退出状态为失败,则作业的存在状态设置为完成。这会导致一些问题,因为我们的应用程序代码将其视为成功执行。我通过在afterjob()中添加一个代码片段来解决这个问题,在这里我检查stepexecution列表并手动设置作业退出状态,但是Spring批处理框架不应该处理退出状态吗?

共有1个答案

墨财
2023-03-14

如果您使用的是基于Java的配置,可以将.on(exitstatus.failed.getexitcode()).fail()添加到一个步骤中,该步骤应导致作业的退出状态为failed:

jobBuilderFactory.get("jobName")
    .start(firstStep())
    .next(secondStep()).on(ExitStatus.FAILED.getExitCode()).fail()
    .next(thirdStep())
    .end()
    .build()
 类似资料:
  • null 鉴于以下MVE: 执行代码时,“Continue”流运行良好,但“Completed”流总是以失败的作业状态退出。 如何使作业在状态已完成的情况下完成?换句话说,我在流的编码上做错了什么?

  • 我正在尝试在Spring批处理中并行运行多个作业。在谷歌上搜索了很多之后,我遇到了JobStep。有没有人使用过JobStep可以解释如何使用它来并行运行作业,或者有没有其他方法可以并行运行2个独立的作业,即当我启动批处理时,2个作业应该开始并行运行。我的要求就像 当我的应用程序启动时,两个作业都应该开始运行。使用spring batch是否可以这样做 编辑:我甚至试过这种方法 我面临着例外。sp

  • 我有一个Spring批处理tasklet,我不知道如何从中失败。我想检查某些参数,如果它们不存在,则在该步骤中使作业失败。 注释掉的行是我试图让工作退出的行。有人有过这样的经历吗?

  • 什么是最简单的方法来简单地获取一组特定的作业,然后从该作业中获取过去发生的作业/步骤的步骤数据?我所说的“过去”是指,也许我会在Spring Batch应用程序中创建一个HTTPendpoint,用户可以在其中发布文件名,然后在实际作业/步骤完成后的几分钟/几小时/几天内返回相应作业/步骤的所有元数据。 我是不是太复杂了?有更简单的方法吗? 理想情况下,我的“报告”类似于下面的内容,如果它是通过我

  • 你可以点击 “设置任务计划”来为一个批处理作业设置计划和点击 “删除任务计划”来移除计划。 如果你在“常规”选项卡选择“不管用户是否登录都要运行”,当你保存计划时你必须在 Windows 计划程序提供你的操作系统用户密码。 【注意】请在设置计划之前保存批处理作业。在运行计划之前,在连接窗口内的密码必须保存。

  • 添加工作到批处理作业 在“常规”选项卡的底部窗格中,选择工作类型,然后如有需要浏览连接、数据库和/或模式以找出你想运行的工作。 你可以双击或拖放工作来将工作从“可用的工作”列表移动到“已选择的工作”列表。若要从已选择的工作列表删除工作,请以相同的方式移除它们。你可以在一个批处理作业中运行来自不同服务器的配置文件。 若要重新排序工作的序列,可使用 “上移”或 “下移”按钮。 如果你想备份整个服务器,