惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

J
Java Code Geeks
博客园 - 聂微东
人人都是产品经理
人人都是产品经理
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
博客园_首页
量子位
阮一峰的网络日志
阮一峰的网络日志
酷 壳 – CoolShell
酷 壳 – CoolShell
H
Hackread – Cybersecurity News, Data Breaches, AI and More
云风的 BLOG
云风的 BLOG
D
DataBreaches.Net
B
Blog
L
LangChain Blog
Apple Machine Learning Research
Apple Machine Learning Research
Vercel News
Vercel News
博客园 - 三生石上(FineUI控件)
爱范儿
爱范儿
Microsoft Azure Blog
Microsoft Azure Blog
IT之家
IT之家
aimingoo的专栏
aimingoo的专栏
B
Blog RSS Feed
H
Help Net Security
The Cloudflare Blog
U
Unit 42

博客园 - nick hao

RocketMQ的延迟消息 Hystrix入门与分析(二):依赖隔离之线程池隔离 Hystrix入门与分析(一):初识Hystrix 自定义Flume Sink:ElasticSearch Sink elastic-job详解(五):自定义任务参数 elastic-job详解(四):失效转移 elastic-job详解(二):作业的调度 elastic-job详解(一):数据分片 定时任务的分布式调度 HBase多条件及分页查询的一些方法 谈谈高并发系统的限流 Phoenix系列:原子的Upsert Phoenix系列:二级索引(2) Phoenix系列:二级索引(1) 延迟任务的实现总结 使用RabbitMQ实现延迟任务 使用Curator操作ZooKeeper ElasticSearch5.X的冷热数据架构 剖析Elasticsearch集群系列之三:近实时搜索、深层分页问题和搜索相关性权衡之道
elastic-job详解(三):Job的手动触发功能
nick hao · 2017-06-10 · via 博客园 - nick hao

elastic-job的任务都是使用quartz来触发的,quartz表达式一般都是定期执行。但有时候一些周期较长的任务,比如一天一次,几小时一次的任务,我们需要等待很久才能触发一次。如果我们需要测试一些功能,或者说重跑一些任务的话,手动触发任务功能就变得尤为重要,也是任务框架一般都必须要实现的特性。现在我们就来聊一聊elastic-job的手动触发任务的功能。

触发功能的使用

elastic-job有个管理界面console,这里不在赘述怎么样部署和打开管理界面。在这个管理界面上,有个触发按钮,点击这个按钮就能触发这个任务。

image

任务定时周期是5s,当点击触发的时候,任务立即出发,如下图。

image

原理分析

elastic-job依靠zookeeper传递消息和quartz本身的触发功能来实现远程触发的功能。

当点击“触发”按钮时,管理页面会从zookeeper中找到当前Job下所有的任务实例,在实例节点上写入数据“TRIGGER”。如下图:

image

每个节点实例启动的时候,elastic-job默认会将任务触发监听器JobTriggerStatusJobListener启动,使用curator来监控instances节点的数据变化,当出现变化则触发JobTriggerStatusJobListener的dataChanged方法。从而最终调用quartz的triggerJob方法,触发任务。

架构点滴