schedulerx 参数传递


schedulerx 参数传递

      

官网:https://help.aliyun.com/document_detail/148202.html

       

               

                             

参数传递

        

工作流中上下游job数据传递,只支持简单java任务,分布式任务可使用mapReduce

        

                

        

jobA:上游任务

@Component
public class TestSimpleJobA extends JavaProcessor {
    
    @Override 
    public ProcessResult process(JobContext context) throws Exception { 
        System.out.println("TestSimpleJobA " + DateTime.now().toString("yyyy-MM-dd HH:mm:ss"));
        return new ProcessResult(true, String.valueOf(1)); 
    }
}

       

jobB:上游任务

@Component
public class TestSimpleJobB extends JavaProcessor {
    
    @Override
    public ProcessResult process(JobContext context) throws Exception {
        System.out.println("TestSimpleJobB " + DateTime.now().toString("yyyy-MM-dd HH:mm:ss"));
        return new ProcessResult(true, String.valueOf(2));
    }
}                       

      

jobC:读取上游任务A、B传递的参数

@Component
public class TestSimpleJobC extends JavaProcessor {
    
    @Override
    public ProcessResult process(JobContext context) throws Exception {
        List<JobInstanceData> upstreamDatas = context.getUpstreamData();
                                              //读取上游传递的数据
        int sum = 0;
        for (JobInstanceData jobInstanceData : upstreamDatas) {
            System.out.println("jobName=" + jobInstanceData.getJobName()
                    + ", data=" + jobInstanceData.getData());
            sum += Integer.valueOf(jobInstanceData.getData());
        }

        System.out.println("TestSimpleJobC sum=" + sum);
        return new ProcessResult(true, String.valueOf(sum));
    }
}                            

        

              

                             

使用示例

  

                      

            

application.yml

spring:
  schedulerx2:
    aliyunAccessKey: ***
    aliyunSecretKey: ***
    regionId: public
    endpoint: acm.aliyun.com
    namespaceName: lihu-test
    namespace: ***
    appName: lihu-job
    groupId: lihu-group
    appKey: OOs+XPhRsAa1Ia6+Op+NAw==
    jobs:
      customJob:
        jobModel: standalone
        className: com.example.demo.job.CustomJob
        cron: "0 */1 * * * ?"
      customJob2:
        jobModel: standalone
        className: com.example.demo.job.CustomJob2
        cron: "0 */1 * * * ?"
      customJob3:
        jobModel: standalone
        className: com.example.demo.job.CustomJob3
        cron: "0 */1 * * * ?"

          

DataConfig

@Configuration
public class DataConfig {

    @Bean
    public JobSyncService initJobSyncService(){
        return new JobSyncService();
    }
}

      

CustomJob

public class CustomJob extends JavaProcessor {

    @Override
    public ProcessResult process(JobContext context) throws Exception {
        System.out.println("job:"+ LocalDateTime.now());
        return new ProcessResult(true,"1");
    }
}

        

CustomJob2

public class CustomJob2 extends JavaProcessor {

    @Override
    public ProcessResult process(JobContext context) throws Exception {
        System.out.println("job2:"+ LocalDateTime.now());
        return new ProcessResult(true,"2");
    }
}

       

CustomJob3

public class CustomJob3 extends JavaProcessor {

    @Override
    public ProcessResult process(JobContext context) throws Exception {
        System.out.println("job3:"+ LocalDateTime.now());

        List<JobInstanceData> dataList = context.getUpstreamData();
        AtomicInteger sum = new AtomicInteger(0);
        dataList.forEach(item -> {
            System.out.println(item.getJobName()+" ==> "+item.getData());
            sum.addAndGet("".equals(item.getData())?0:Integer.parseInt(item.getData()));
        });
        System.out.println("上游数据的总和为:"+sum);

        return new ProcessResult(true);
    }
}

       

                  

                             

使用测试

      

启动应用,控制台查看任务里恩表

                

          

创建工作流

                

                  

                

工作流导入任务

                

                  

         

编辑任务流

                

       

发布任务流:点击发布后会开启工作流,默认不开启

                

           

应用控制台输出

2022-04-18 17:06:00.500  INFO 960 --- [er-instance-456] c.a.s.worker.actor.JobInstanceActor      : handleSubmitJobInstance, jobInstanceId=998114068
2022-04-18 17:06:00.501  INFO 960 --- [er-instance-456] c.a.s.worker.master.TaskMasterFactory    : create TaskMaster, className=com.alibaba.schedulerx.worker.master.StandaloneTaskMaster
2022-04-18 17:06:00.501  INFO 960 --- [er-instance-457] c.a.s.worker.actor.JobInstanceActor      : handleSubmitJobInstance, jobInstanceId=998114060
2022-04-18 17:06:00.501  INFO 960 --- [er-instance-457] c.a.s.worker.master.TaskMasterFactory    : create TaskMaster, className=com.alibaba.schedulerx.worker.master.StandaloneTaskMaster
2022-04-18 17:06:00.503  INFO 960 --- [145_998114068-0] c.a.s.worker.container.ThreadContainer   : reportTaskStatus instanceId=716145_998114068_0 submitResult=true, processResult=ProcessResult [status=RUNNING, result=null]
2022-04-18 17:06:00.503  INFO 960 --- [144_998114060-0] c.a.s.worker.container.ThreadContainer   : reportTaskStatus instanceId=716144_998114060_0 submitResult=true, processResult=ProcessResult [status=RUNNING, result=null]
# 任务2运行
job2:2022-04-18T17:06:00.503

# 任务运行
job:2022-04-18T17:06:00.503
2022-04-18 17:06:00.503  INFO 960 --- [145_998114068-0] c.a.s.worker.container.ThreadContainer   : reportTaskStatus instanceId=716145_998114068_0 submitResult=true, processResult=ProcessResult [status=SUCCESS, result=2]
2022-04-18 17:06:00.503  INFO 960 --- [144_998114060-0] c.a.s.worker.container.ThreadContainer   : reportTaskStatus instanceId=716144_998114060_0 submitResult=true, processResult=ProcessResult [status=SUCCESS, result=1]
2022-04-18 17:06:01.505  INFO 960 --- [ead-998114068-1] c.a.s.w.batch.ContainerStatusReqHandler  : jobInstanceId=998114068 batch report status=3 to task master, size:2
2022-04-18 17:06:01.505  INFO 960 --- [ead-998114060-1] c.a.s.w.batch.ContainerStatusReqHandler  : jobInstanceId=998114060 batch report status=3 to task master, size:2
2022-04-18 17:06:01.506  INFO 960 --- [atcher-task-462] c.a.schedulerx.worker.actor.TaskActor    : jobInstanceId=998114060, batch receive task status reqs, size:2
2022-04-18 17:06:01.506  INFO 960 --- [atcher-task-463] c.a.schedulerx.worker.actor.TaskActor    : jobInstanceId=998114068, batch receive task status reqs, size:2
2022-04-18 17:06:01.507  INFO 960 --- [atcher-task-462] .w.m.h.CommonUpdateInstanceStatusHandler : report jobInstance=998114060, status=SUCCESS to AtLeastDeliveryRoutingActor
2022-04-18 17:06:01.507  INFO 960 --- [atcher-task-463] .w.m.h.CommonUpdateInstanceStatusHandler : report jobInstance=998114068, status=SUCCESS to AtLeastDeliveryRoutingActor
2022-04-18 17:06:01.507  INFO 960 --- [r-container-465] c.a.s.worker.actor.ContainerActor        : handleDestroyContainerPool from cycleId=998114060_0, handler serialNum=0.
2022-04-18 17:06:01.507  INFO 960 --- [r-container-466] c.a.s.worker.actor.ContainerActor        : handleDestroyContainerPool from cycleId=998114068_0, handler serialNum=0.
2022-04-18 17:06:01.507  INFO 960 --- [t-dispatcher-98] c.a.s.w.ha.AtLeastOnceDeliveryActor      : report jobInstance=998114060, status=4 to server=ActorSelection[Anchor(akka.tcp://server@112.124.156.1:8080/), Path(/user/instance_status_router)]
2022-04-18 17:06:01.507  INFO 960 --- [lt-dispatcher-7] c.a.s.w.ha.AtLeastOnceDeliveryActor      : report jobInstance=998114068, status=4 to server=ActorSelection[Anchor(akka.tcp://server@112.124.156.1:8080/), Path(/user/instance_status_router)]
2022-04-18 17:06:01.508  INFO 960 --- [atcher-task-462] .w.m.h.CommonUpdateInstanceStatusHandler : uniqueId: 716144_998114060 is finished, remove from MasterPool.
2022-04-18 17:06:01.509  INFO 960 --- [atcher-task-463] .w.m.h.CommonUpdateInstanceStatusHandler : uniqueId: 716145_998114068 is finished, remove from MasterPool.
2022-04-18 17:06:01.568  INFO 960 --- [er-instance-467] c.a.s.worker.actor.JobInstanceActor      : handleSubmitJobInstance, jobInstanceId=998114057
2022-04-18 17:06:01.569  INFO 960 --- [er-instance-467] c.a.s.worker.master.TaskMasterFactory    : create TaskMaster, className=com.alibaba.schedulerx.worker.master.StandaloneTaskMaster
2022-04-18 17:06:01.570  INFO 960 --- [146_998114057-0] c.a.s.worker.container.ThreadContainer   : reportTaskStatus instanceId=716146_998114057_0 submitResult=true, processResult=ProcessResult [status=RUNNING, result=null]

# 任务3运行
job3:2022-04-18T17:06:01.570
customJob2 ==> 2
customJob ==> 1
上游数据的总和为:3    #读取上游数据,计算所得的数据总和

          

                 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值