代码拉取完成,页面将自动刷新
同步操作将从 dromara/disjob 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
简体中文
| English
一个分布式的任务调度框架,除了具备常规的分布式任务调度功能外,还提供子任务的拆分、运行中的任务控制、任务依赖、广播路由、工作流任务(DAG)、管理器与执行器分离部署等能力。
轻量级,简单易用,特别适合长任务的执行。有较好的伸缩性,扩展性,稳定性,历经生产检验。
distributed-scheduler # 主项目
├── scheduler-common # 工具包
├── scheduler-core # 任务调度相关的核心类(如数据模型、枚举类、抽象层接口等)
├── scheduler-dispatch # 任务分发模块
│ ├── scheduler-dispatch-api # 任务分发的抽象接口层
│ ├── scheduler-dispatch-http # 任务分发的Http实现
│ └── scheduler-dispatch-redis # 任务分发的Redis实现
├── scheduler-registry # Server(Supervisor & Worker)注册模块
│ ├── scheduler-registry-api # Server注册的抽象接口层
│ ├── scheduler-registry-consul # Server注册的Consul实现
│ ├── scheduler-registry-etcd # Server注册的Etcd实现
│ ├── scheduler-registry-nacos # Server注册的Nacos实现
│ ├── scheduler-registry-redis # Server注册的Redis实现
│ └── scheduler-registry-zookeeper # Server注册的Zookeeper实现
├── scheduler-reports # 聚合各个模块的测试覆盖率报告
├── scheduler-samples # Samples项目
│ ├── scheduler-samples-common # 存放使用范例中用到的公共代码,包括使用到的一些公共配置文件等
│ ├── scheduler-samples-merged # Supervisor与Worker合并部署的范例(Spring boot应用)
│ └── scheduler-samples-separately # Supervisor与Worker分离部署的范例模块
│ ├── scheduler-samples-separately-supervisor # Supervisor单独部署的范例(Spring boot应用)
│ ├── scheduler-samples-separately-worker-frameless # Worker单独部署的范例(非Spring-boot应用,直接main方法启动)
│ └── scheduler-samples-separately-worker-springboot # Worker单独部署的范例(Spring boot应用)
├── scheduler-supervisor # Supervisor代码(Spring-boot应用,需要引导Spring扫描该包目录)
├── scheduler-test # 用于辅助测试
└── scheduler-worker # Worker代码
注意: 最近 aliyun 那边的镜像仓受Maven中央仓库网络限制,部分依赖可能会从中央仓库同步文件失败,如果依赖查找不到(即无法下载)请在
settings.xml
文件中删除aliyun mirror的配置(不建议使用aliyun maven mirror)
<dependency>
<groupId>cn.ponfee</groupId>
<artifactId>scheduler-{xxx}</artifactId>
<version>1.11</version>
</dependency>
./mvnw clean install -DskipTests -Dcheckstyle.skip=true -U
运行仓库代码提供的SQL脚本,创建数据库表:db-script/JOB_TABLES_DDL.sql(也可直接运行内置mysql-server,启动时会自动初始化SQL脚本)
编写自己的任务处理器PrimeCountJobHandler,并继承JobHandler
启动samples项目下的各应用,包括:
1)scheduler-samples-merged # Supervisor与Worker合并部署的Spring boot应用
2)scheduler-samples-separately-supervisor # Supervisor单独部署的Spring boot应用
3)scheduler-samples-separately-worker-springboot # Worker单独部署的Spring boot应用
4)scheduler-samples-separately-worker-frameless # Worker单独部署(非Spring-boot应用),直接运行Main方法启动
@EnableSupervisor
@EnableWorker
public class MergedApplication extends AbstractSamplesApplication {
public static void main(String[] args) {
SpringApplication.run(MergedApplication.class, args);
}
}
localhost:8081
)triggerValue
修改为大于当前时间的日期值以便即将触发(如当前时间点的下一分钟)jobHandler
支持:类的全限定名、Spring bean name、源码curl --location --request POST 'http://localhost:8081/api/job/add' \
--header 'Content-Type: application/json' \
--data-raw '{
"jobGroup": "default",
"jobName": "prime-counter",
"jobHandler": "cn.ponfee.scheduler.samples.common.handler.PrimeCountJobHandler",
"jobState": 1,
"jobParam": "{\"m\":1,\"n\":6000000000,\"blockSize\":100000000,\"parallel\":7}",
"triggerType": 2,
"triggerValue": "2022-10-06 12:00:00"
}'
-- 刚CURL添加的任务会落入该表中
SELECT * FROM sched_job;
-- 查看任务的执行信息
SELECT * from sched_instance;
SELECT * from sched_task;
-- 可执行以下SQL让该JOB再次触发执行
UPDATE sched_job SET job_state=1, last_trigger_time=NULL, next_trigger_time=(unix_timestamp()*1000+2000) WHERE job_name='prime-counter';
localhost:8081
,jobId替换为待触发执行的job)curl --location --request POST 'http://localhost:8081/api/job/trigger?jobId=4236701614080' \
--header 'Content-Type: application/json'
如有发现bug、更优的实现方案、新特性等,可提交PR或新建Issues。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。