【问题标题】:Spring boot batch jobs - Exit codes/Return codesSpring Boot 批处理作业 - 退出代码/返回代码
【发布时间】:2020-09-29 14:09:59
【问题描述】:

我在外部 Tomcat 上部署了一个 Spring Boot 批处理应用程序。期望是 shell 脚本应该调用批处理作业并返回退出代码(成功时为 0,失败时为非零)。我在下面实现了,但即使批处理失败,我在 shell 脚本中得到 0 返回码。想知道 Spring 推荐的管理这些错误代码的方法是什么。请推荐

if (jobExecution.getStatus() == BatchStatus.COMPLETED) {
            jobExecution.setExitStatus(new ExitStatus("0"));
        } else {
            jobExecution.setExitStatus(new ExitStatus("1"));
        }  

【问题讨论】:

    标签: spring-boot spring-batch


    【解决方案1】:

    期望是shell脚本应该调用批处理作业并返回退出代码(0表示成功,非0表示失败)

    如果您使用以下方式运行应用,这应该是默认设置:

        System.exit(SpringApplication.exit(SpringApplication.run(MyApplication.class, args)));
    

    如果你想自定义退出代码,你需要定义一个ExiteCodeGenerator。这是一个例子:

    @SpringBootApplication
    public class ExitCodeApplication {
    
       @Bean
       public ExitCodeGenerator exitCodeGenerator() {
          return () -> 42;
       }
    
       public static void main(String[] args) {
               System.exit(SpringApplication.exit(SpringApplication.run(ExitCodeApplication.class, args)));
       }
    
    }
    

    您可以在reference documentation找到更多详细信息。

    【讨论】:

    • 谢谢马哈茂德。我的 Spring 启动批处理作为战争部署在 Tomcat 容器上,并且希望确保应用程序即使在批处理失败后也能继续运行。在控制器中定义退出代码怎么样?从 shell 脚本思考,我进行了 http 调用,并在批处理完成时获得 0/非零状态。
    猜你喜欢
    • 1970-01-01
    • 2011-12-14
    • 2019-08-08
    • 1970-01-01
    • 1970-01-01
    • 2020-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多