ElasticJob的作业分类基于classtype两种类型。基于class的作业需要开发者自行通过实现接口的方式织入业务逻辑;基于type的作业则无需编码,只需要提供相应配置即可。基于class的作业接口的方法参数shardingContext包含作业配置、片和运行时信息。可通过getShardingTotalCount()getShardingItem()等方法分别获取分片总数和运行在本作业服务器的分片序列号等。

ElasticJob目前提供SimpleDataflow这两种基于class的作业类型,并提供ScriptHTTP这两种基于type的作业类型,用户可通过实现SPI接口自行扩展作业类型。

本篇博客介绍Script作业。

添加依赖(3.0.1是目前最新的Releases版本):

        <dependency><groupId>org.apache.shardingsphere.elasticjob</groupId><artifactId>elasticjob-lite-core</artifactId><version>3.0.1</version></dependency>

Script作业

ElasticJob支持shellpython以及perl等所有类型脚本。可通过属性script.command.line配置待执行脚本,无需编码。执行脚本路径可包含参数,参数传递完毕后,作业框架会自动追加最后一个参数为作业运行时信息。

package com.kaven.job;import org.apache.shardingsphere.elasticjob.api.JobConfiguration;
import org.apache.shardingsphere.elasticjob.lite.api.bootstrap.impl.ScheduleJobBootstrap;
import org.apache.shardingsphere.elasticjob.reg.base.CoordinatorRegistryCenter;
import org.apache.shardingsphere.elasticjob.reg.zookeeper.ZookeeperConfiguration;
import org.apache.shardingsphere.elasticjob.reg.zookeeper.ZookeeperRegistryCenter;/*** @Author: ITKaven* @Date: 2021/11/20 17:05* @Blog: https://kaven.blog.csdn.net* @Leetcode: https://leetcode-cn.com/u/kavenit* @Notes:*/
public class Application {public static void main(String[] args) {new ScheduleJobBootstrap(createRegistryCenter(), "SCRIPT",createJobConfiguration()).schedule();}private static CoordinatorRegistryCenter createRegistryCenter() {ZookeeperConfiguration zc = new ZookeeperConfiguration("192.168.1.184:9000", "my-job");zc.setConnectionTimeoutMilliseconds(40000);zc.setMaxRetries(5);CoordinatorRegistryCenter regCenter = new ZookeeperRegistryCenter(zc);regCenter.init();return regCenter;}private static JobConfiguration createJobConfiguration() {return JobConfiguration.newBuilder("MyScriptJob", 3).description("脚本作业").cron("30 * * * * ?").setProperty("script.command.line", "python F:\\workspace\\IDEA\\my\\job\\src\\main\\java\\com\\kaven\\job\\script.py").overwrite(true).failover(true).build();}
}

elasticJobType参数需要全部大写(比如SCRIPTHTTP)。

        new ScheduleJobBootstrap(createRegistryCenter(), "SCRIPT",createJobConfiguration()).schedule();

定义脚本作业只需要一行(这里脚本路径是绝对路径)。

                .setProperty("script.command.line", "python F:\\workspace\\IDEA\\my\\job\\src\\main\\java\\com\\kaven\\job\\script.py")

script.py

import sys
import timeprint(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime()), ':', sys.argv[-1])

输出如下图所示:


脚本路径也可以使用相对路径(相对于项目的路径F:\\workspace\\IDEA\\my\\job)。

                .setProperty("script.command.line","python .\\src\\main\\java\\com\\kaven\\job\\script.py")

参数

给脚本传参数,就跟手动执行脚本一样,在命令后面添加参数即可。

    private static JobConfiguration createJobConfiguration() {return JobConfiguration.newBuilder("MyScriptJob4", 3).description("脚本作业").cron("30 * * * * ?").setProperty("script.command.line","python F:\\workspace\\IDEA\\my\\job\\src\\main\\java\\com\\kaven\\job\\script.py kaven").overwrite(true).failover(true).build();}

修改脚本:

import sys
import timeprint(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime()), ':', sys.argv[:])

输出如下图所示:


Script作业就介绍到这里,如果博主有说错的地方或者大家有不同的见解,欢迎大家评论补充。

ElasticJob‐Lite:Script作业相关推荐

  1. ElasticJob‐Lite:HTTP作业

    ElasticJob的作业分类基于class和type两种类型.基于class的作业需要开发者自行通过实现接口的方式织入业务逻辑:基于type的作业则无需编码,只需要提供相应配置即可.基于class的 ...

  2. 代写php代码作业,代写phpmyadmin留学生作业、代做SQL语言作业、SQL程序设计作业调试、代做PHP script作业...

    代写phpmyadmin留学生作业.代做SQL语言作业.SQL程序设计作业调试.代做PHP script作业 日期:2019-04-20 01:17 Overview:In this assignme ...

  3. ElasticJob Lite Console 处于分片待调整状态,无法触发解决方案

    将对应job的触发时间改成最近的,比如当前时间17:49:00,那就把Cron表达式改成下一分钟:0 50 17 * * ? ,当自动触发过一次后,状态就会变成 因为要触发过,才会让你操作. 记得,改 ...

  4. 停滞数年后,ElasticJob 携首个 Apache 版本 3.0.0-alpha 回归!

    作者 | 张亮,Apache ShardingSphere PMC Chair 责编 | 夕颜 头图 | CSDN 出品 | CSDN(ID:CSDNnews) 在成为 Apache Sharding ...

  5. 【分布式任务调度】二、Elastic-Job详细介绍

    Elastic-Job 一.What is elastic-job? Elastic-Job-Lite Elastic-Job-Cloud Elastic-job开发环境要求 Elastic-Job配 ...

  6. 【手把手】分布式定时任务调度解析之Elastic-Job

    1.这货怎么没怎么听过 经常使用Quartz或者Spring Task的小伙伴们,或多或少都会遇到几个痛点,比如: 1.不敢轻易跟着应用服务多节点部署,可能会重复多次执行而引发系统逻辑的错误: 2.Q ...

  7. 王者归来:分布式调度解决方案 ElasticJob 重启!

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 你会误认为 ElasticJob 只是作业管控平台么?创 ...

  8. elastic-job的原理简介和使用

    elastic-job是当当开源的一款非常好用的作业框架,在这之前,我们开发定时任务一般都是使用quartz或者spring-task(ScheduledExecutorService),无论是使用q ...

  9. Java 定时任务调度(8)--ElasticJob 入门实战(ElasticJob-Lite使用)

    ElasticJob 是一个分布式调度解决方案,由 2 个相互独立的子项目 ElasticJob-Lite 和 ElasticJob-Cloud 组成.本文主要介绍 ElasticJob-Lite 的 ...

最新文章

  1. 想要,但很难得到就随缘
  2. 比较有趣的一个笔试题目
  3. Hyperledger Fabric 智能合约实战 (7) windows安装fabric
  4. 十进制小数转换为二进制
  5. mysql8.0.13可以用在生产环境_MySQL 8.0.13的使用心得
  6. C++绝不在构造和析构过程中调用virtual函数
  7. QT中的事件传递顺序小论
  8. 支付宝和微信的JSSDK发起支付
  9. ElasticSearch全文搜索引擎之Aggregation聚合查询(结合Kibana)
  10. cadence17.2小白eda365skill 安装教程
  11. MATLAB图像分割系统设计
  12. 《具体数学》部分习题解答3
  13. 电子行报告:从海外龙头发展历程看国内半导体设备企业投资价值
  14. C++多继承中的二义性问题
  15. 认认真真推荐几个清华学霸的公众号!
  16. 使用 GPG 加密和解密文件
  17. 昭阳K2450笔记本安装Linux,可能是最难拆的笔记本:lenovo 联想 昭阳K2450 升级固态硬盘的艰难历程...
  18. 闲鱼客服工具/消息管理系统:可以让客服放下手机,在电脑上管理闲鱼店铺的咨询信息
  19. 淮海工学院计算机学院团委,我校第三届“我最喜好的先生”评比运动圆满结束...
  20. 记一次骑缝签性能优化

热门文章

  1. HTML学习笔记(五)_HTML5表单相关元素和属性
  2. Android进阶之路 - Citypicker 五分钟内快速实现地址选择器
  3. 怎么在Visio里编辑公式
  4. 实验5 基于stm32的HF高频RFID通信协议
  5. 相机标定与3D重建(1)创建标定板(上)
  6. #2摄影测量学—基础概念和透视变换
  7. Linux虚拟文件系统vfs与文件操作始末
  8. 写函数:自己写一个作图函数就是这么简单
  9. 婚礼MV怎么自己做?制作婚礼MV视频的方法,小白也能3步搞定
  10. 基于51单片机电子秤称重系统10kg量程proteus仿真原理图PCB