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

目前我正在从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,以创建监视app的简单方法 . 有没有办法以同步方式获得此ID?因为获得特定工作的最后执行可能导致错误,例如 . 如果我同时运行了许多相同的作业,则会丢失作业执行 .

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

回答(1)

2 years ago

尝试使用以下注释从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