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 #读取上游数据,计算所得的数据总和