创建调度任务
应用发布后,您可以为应用创建调度任务。
操作步骤
登录 SOFAStack 控制台。
在左侧导航栏选择 中间件 > 任务调度 > 任务配置。
选择 添加任务 > 集群任务,然后配置以下参数:
参数
说明
任务名称
配置任务的名称,用于识别任务。
应用名称
填写或选择目标应用名称。
支持英文、中文、数字、下划线(_)、短划线(-),50 个字符之内。必须与工程中
application.properties
文件的spring.application.name
配置的应用名称一致。调度类型
配置任务调度的类型,可选值:
cron 表达式触发:该类型的任务在创建时需要配置 CRON 表达式定时触发任务。
事件触发:该类型的任务通过外部事件触发任务。
Cron 表达式
配置 CRON 表达式,用于定时触发任务。配置方式请参见 CRON 表达式详解。
仅在 调度类型 为 cron 表达式触发 时配置。
任务拆分
输入拆分处理器和执行处理器的名称。获取方式请参见 任务拆分和执行。
任务分组(可选)
选择或新建一个任务分组,方便归纳管理任务。
自定义参数(可选)
自定义参数支持从控制台向任务传递参数,参数也可以在任务间传递,格式为:
key=value
。参数配置说明如下:
参数名:设置自定义参数的名称。
支持英文大小写、数字、下划线(_), 不能超过 128 字符。
类型 和 参数值:可选类型和参数值配置方式如下。
STRING:支持通用的字符串。
LIST:支持字符串数组,例如:
["aaa","bbb"]
。BOOLEAN:支持 true 或 false。
PLACEHOLDER:支持参数替换,目前支持的变量如下:
${sharding}
:替换当前分片值,配合简单任务使用。${shardingCount}
:替换简单任务配置的分片数。${triggerTime}
:替换预期的触发时间。
说明您也可以在业务端通过上下文 context(该对象必须实现 Serializable。)获取和覆盖自定义参数。代码如下:
public class SimpleTaskDemo implements ISimpleJobHandler { @Override public ClientCommonResult handle(JobExecuteContext context) { // 根据 key 获取 obj Object obj = context.getCustomParam("intObj"); // 获取自定义参数 Map<String, Object> paramsMap = context.getCustomParams(); context.putCustomParams("num", 2); List<String> listparam = newArrayList <>(); listparam.add("aaaaaa"); listparam.add("111111"); context.putCustomParams("intparam", 111); context.putCustomParams("stringparam", "dfadsfad1243"); context.putCustomParams("listparam", listparam); // 注意对象必须实现 Serializable context.putCustomParams("objectParam", newObject()); return ClientCommonResult.buildSuccessResult(); } .... }
路由策略
选择执行任务的路由策略,可选值:
随机:每次执行都随机分发到客户端服务器上。
定向:每次执行都分发到同一个客户端服务器上。
暂不支持指定客户端服务器 IP。
轮询:每次执行依次分发到每台客户端服务器上。
通信方式
选择任务的通信方式,可选值:
单向 ONEWAY:单向操作,没有返回值。控制台不记录触发记录、无超时、无重试。
高频非重要任务时建议使用。
回调 CALLBACK:双向操作,有返回值。控制台可查看触发记录、可设置超时、可重试。
重要任务时建议使用,触发间隔至少 5 分钟。
任务互斥
选择是否开启任务互斥模式。开启任务互斥模式时,处在“执行中”或“暂停”状态的任务即使已经达到下一个任务触发时间点,仍无法再次触发。本次调度状态以“跳过”标记。
默认为不开启。仅当 通信方式 设置为 回调 CALLBACK 时配置。
漏触发策略
设置任务漏触发时的处理策略,可选值:
忽略:不进行补偿处理。
立即触发:立即重新触发。
时间充裕时触发:是否进行补偿触发取决于下次触发前的剩余时间是否充裕。若当前时间 + 超时时间 < 下次触发时间,则进行补偿触发,并将此次补偿触发插入触发记录;反之,则不触发。多次漏触发进行恢复时仅进行一次补偿触发。
仅当 通信方式 设置为 回调 CALLBACK,且 调度类型 为 cron 表达式触发 时,可配置此项。
超时策略
设置任务执行超时后的处理策略,可选值:
不处理:触发记录和执行记录状态均标记为失败。
停止后续触发:执行记录状态为失败,触发记录状态为超时,并且无法再次触发。仅当开启任务互斥模式时可选择此项。
仅当 通信方式 设置为 回调 CALLBACK 时配置。
超时时间
设置任务执行的超时时间,当任务超过此时间未回调则认为执行失败。单位可选择为 分钟 和 小时。
仅当 通信方式 设置为 回调 CALLBACK 时配置。
失败处理策略
设置任务执行失败后的处理策略,可选值:
不重试:失败后不进行重试。
最多重试三次:失败后立即进行重试,但最多重试三次。
优先级
用于识别任务的重要性,暂无其他作用。
默认为 中等。
高级选项
选择是否配置高级选项。开启后,可根据需要配置如下参数:
当 通信方式 设置为 单向 ONEWAY 时,可配置如下参数:
单台机器最大处理速率:配置单台客户端在单位时间内处理的最大数据量。默认为机器最大处理速率。
当 通信方式 设置为 回调 CALLBACK 时,可配置如下参数:
单台机器最大处理速率:配置单台客户端在单位时间内处理的最大数据量。默认为机器最大处理速率。
并行执行索引块数量上限:配置集群最大并行索引块(chunk,单个执行步骤中对任务进行拆分的数据分片)数量。索引块在客户端平均分配。
假设单台并行索引块数量上限为 x,集群并行执行索引块数量上限为 y,客户端数量为 m,则单台客户端实际最大并行索引块数量为
min(x, y/m)
。单台并行执行索引块数量上限:配置单台客户端最大并行索引块(chunk)数量。默认值为 5。
单个分片处理失败跳过数据上限:配置单个分片处理失败后跳过的数据上限。若单个分片处理失败,允许队列中后面 n 个数据被跳过。默认不跳过。
描述(可选)
配置任务的描述信息,例如业务含义、影响范围等,最多 1024 个字符。
单击 提交。
在任务列表中打开目标任务的 是否启用 开关。
如果有客户端在线,新配置的任务自动有客户端注册。任务在禁用的状态下,您也可以在操作列单击 触发,手动触发一次任务。