ElasticJob‐Lite:Script作业
ElasticJob
的作业分类基于class
和type
两种类型。基于class
的作业需要开发者自行通过实现接口的方式织入业务逻辑;基于type
的作业则无需编码,只需要提供相应配置即可。基于class
的作业接口的方法参数shardingContext
包含作业配置、片和运行时信息。可通过getShardingTotalCount()
、getShardingItem()
等方法分别获取分片总数和运行在本作业服务器的分片序列号等。
ElasticJob
目前提供Simple
、Dataflow
这两种基于class
的作业类型,并提供Script
、HTTP
这两种基于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
支持shell
、python
以及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
参数需要全部大写(比如SCRIPT
和HTTP
)。
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作业相关推荐
- ElasticJob‐Lite:HTTP作业
ElasticJob的作业分类基于class和type两种类型.基于class的作业需要开发者自行通过实现接口的方式织入业务逻辑:基于type的作业则无需编码,只需要提供相应配置即可.基于class的 ...
- 代写php代码作业,代写phpmyadmin留学生作业、代做SQL语言作业、SQL程序设计作业调试、代做PHP script作业...
代写phpmyadmin留学生作业.代做SQL语言作业.SQL程序设计作业调试.代做PHP script作业 日期:2019-04-20 01:17 Overview:In this assignme ...
- ElasticJob Lite Console 处于分片待调整状态,无法触发解决方案
将对应job的触发时间改成最近的,比如当前时间17:49:00,那就把Cron表达式改成下一分钟:0 50 17 * * ? ,当自动触发过一次后,状态就会变成 因为要触发过,才会让你操作. 记得,改 ...
- 停滞数年后,ElasticJob 携首个 Apache 版本 3.0.0-alpha 回归!
作者 | 张亮,Apache ShardingSphere PMC Chair 责编 | 夕颜 头图 | CSDN 出品 | CSDN(ID:CSDNnews) 在成为 Apache Sharding ...
- 【分布式任务调度】二、Elastic-Job详细介绍
Elastic-Job 一.What is elastic-job? Elastic-Job-Lite Elastic-Job-Cloud Elastic-job开发环境要求 Elastic-Job配 ...
- 【手把手】分布式定时任务调度解析之Elastic-Job
1.这货怎么没怎么听过 经常使用Quartz或者Spring Task的小伙伴们,或多或少都会遇到几个痛点,比如: 1.不敢轻易跟着应用服务多节点部署,可能会重复多次执行而引发系统逻辑的错误: 2.Q ...
- 王者归来:分布式调度解决方案 ElasticJob 重启!
点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 你会误认为 ElasticJob 只是作业管控平台么?创 ...
- elastic-job的原理简介和使用
elastic-job是当当开源的一款非常好用的作业框架,在这之前,我们开发定时任务一般都是使用quartz或者spring-task(ScheduledExecutorService),无论是使用q ...
- Java 定时任务调度(8)--ElasticJob 入门实战(ElasticJob-Lite使用)
ElasticJob 是一个分布式调度解决方案,由 2 个相互独立的子项目 ElasticJob-Lite 和 ElasticJob-Cloud 组成.本文主要介绍 ElasticJob-Lite 的 ...
最新文章
- 想要,但很难得到就随缘
- 比较有趣的一个笔试题目
- Hyperledger Fabric 智能合约实战 (7) windows安装fabric
- 十进制小数转换为二进制
- mysql8.0.13可以用在生产环境_MySQL 8.0.13的使用心得
- C++绝不在构造和析构过程中调用virtual函数
- QT中的事件传递顺序小论
- 支付宝和微信的JSSDK发起支付
- ElasticSearch全文搜索引擎之Aggregation聚合查询(结合Kibana)
- cadence17.2小白eda365skill 安装教程
- MATLAB图像分割系统设计
- 《具体数学》部分习题解答3
- 电子行报告:从海外龙头发展历程看国内半导体设备企业投资价值
- C++多继承中的二义性问题
- 认认真真推荐几个清华学霸的公众号!
- 使用 GPG 加密和解密文件
- 昭阳K2450笔记本安装Linux,可能是最难拆的笔记本:lenovo 联想 昭阳K2450 升级固态硬盘的艰难历程...
- 闲鱼客服工具/消息管理系统:可以让客服放下手机,在电脑上管理闲鱼店铺的咨询信息
- 淮海工学院计算机学院团委,我校第三届“我最喜好的先生”评比运动圆满结束...
- 记一次骑缝签性能优化