Spring Cloud DataFlow - 在运行任务后获取执行ID

时间:2017-01-27 15:48:45

标签: spring spring-batch spring-cloud airflow spring-cloud-dataflow

目前,我正在从Spring XD作为我的工作流和运行时环境迁移到Spring Cloud DataFlow和Apache Airflow。我想在Airflow中创建工作流,并使用自定义Airflow运算符通过REST-API在Spring Cloud DataFlow服务器上运行Spring Cloud Tasks。

可以使用:

curl -X GET http://SERVER:9393/tasks/deployments/...

不幸的是,DataFlow不会在此请求中返回作业执行ID,以创建监控应用程序的简单方法。有没有办法以同步方式获得此ID?因为获得特定工作的最后执行可能导致错误,例如。如果我同时运行了许多相同的工作,则会丢失作业。

在Spring DataFlow上我正在运行Spring Batch作业,所以也许更好的方法是以某种方式设置执行作业ID并将其作为输入参数传递?

1 个答案:

答案 0 :(得分:2)

尝试使用以下注释从bean中收集任务信息:

public class MyBean {

    @BeforeTask
    public void methodA(TaskExecution taskExecution) {
    }

    @AfterTask
    public void methodB(TaskExecution taskExecution) {
    }

    @FailedTask
    public void methodC(TaskExecution taskExecution, Throwable throwable) {
    }
}

https://docs.spring.io/spring-cloud-task/docs/current-SNAPSHOT/reference/htmlsingle/#features-task-execution-listener