博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Elastic-job之脚本作业
阅读量:5752 次
发布时间:2019-06-18

本文共 1503 字,大约阅读时间需要 5 分钟。

脚本作业是用来定时调度脚本文件的,如windows的cmd,linux上的shell文件,在调度的时候会把当前调度的ShardingContext的转化为一个JSON串作为脚本调度的参数进行传递。其不需要指定作业对应的class,因为我们不是通过我们自己的class来进行调度的。脚本作业在配置时由<job:script/>配置,示例如下:

其中script-command-line属性用于指定该调度对应的脚本文件路径或某个可执行的指令。这里只是简单的打印一下hello和ShardingContext对应的JSON形式。其它配置参数和之前介绍的简单作业的配置参数类似。

脚本作业将由com.dangdang.ddframe.job.executor.type.ScriptJobExecutor执行。其代码如下:

public final class ScriptJobExecutor extends AbstractElasticJobExecutor {        public ScriptJobExecutor(final JobFacade jobFacade) {        super(jobFacade);    }        @Override    protected void process(final ShardingContext shardingContext) {        final String scriptCommandLine = ((ScriptJobConfiguration) getJobRootConfig().getTypeConfig()).getScriptCommandLine();        if (Strings.isNullOrEmpty(scriptCommandLine)) {            throw new JobConfigurationException("Cannot find script command line for job '%s', job is not executed.", shardingContext.getJobName());        }        executeScript(shardingContext, scriptCommandLine);    }        private void executeScript(final ShardingContext shardingContext, final String scriptCommandLine) {        CommandLine commandLine = CommandLine.parse(scriptCommandLine);        commandLine.addArgument(GsonFactory.getGson().toJson(shardingContext), false);        try {            new DefaultExecutor().execute(commandLine);        } catch (final IOException ex) {            throw new JobConfigurationException("Execute script failure.", ex);        }    }}

(本文由Elim写于2017年10月1日)

转载地址:http://hxukx.baihongyu.com/

你可能感兴趣的文章
浅尝TensorFlow on Kubernetes
查看>>
springboot系列十 Spring-Data-Redis
查看>>
Confluence 6 注册外部小工具
查看>>
excel进行矩阵计算
查看>>
基于Android平台的动态生成控件和动态改变控件位置的方法
查看>>
linux 死机分析
查看>>
BOM
查看>>
LeetCode:Nim Game - 尼姆博弈
查看>>
Alpha冲刺&总结报告(12/12)(麻瓜制造者)
查看>>
iOS: Block的循环引用
查看>>
mysql实战02 | 日志系统:一条SQL更新语句是如何执行的?
查看>>
Xamarin.Android 引导页
查看>>
LINUX系统、磁盘与进程的相关命令
查看>>
测试九 赛后感受
查看>>
ECC椭圆曲线详解(有具体实例)
查看>>
关于WechatApp学习总结
查看>>
Linux常见命令(二)
查看>>
document.write()的用法和清空的原因
查看>>
【EXLUCAS模板】【拓展卢卡斯详解】【组合数高级篇】LuoGu P4720
查看>>
PyCharm切换解释器
查看>>