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

触发功能的使用

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

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

原理分析

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

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

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

elastic-job详解(三):Job的手动触发功能的更多相关文章

  1. .NET DLL 保护措施详解(三)最终效果

    针对.NET DLL 保护措施详解所述思路完成最终的实现,以下为程序包下载地址 下载 注意: 运行环境为.net4.0,需要安装VS2015 C++可发行组件包vc_redist.x86.exe.然后 ...

  2. Android 之窗口小部件详解(三)  部分转载

    原文地址:http://blog.csdn.net/iefreer/article/details/4626274. (一) 应用程序窗口小部件App Widgets 应用程序窗口小部件(Widget ...

  3. WebSocket安卓客户端实现详解(三)–服务端主动通知

    WebSocket安卓客户端实现详解(三)–服务端主动通知 本篇依旧是接着上一篇继续扩展,还没看过之前博客的小伙伴,这里附上前几篇地址 WebSocket安卓客户端实现详解(一)–连接建立与重连 We ...

  4. logback -- 配置详解 -- 三 -- <encoder>

    附: logback.xml实例 logback -- 配置详解 -- 一 -- <configuration>及子节点 logback -- 配置详解 -- 二 -- <appen ...

  5. python设计模式之装饰器详解(三)

    python的装饰器使用是python语言一个非常重要的部分,装饰器是程序设计模式中装饰模式的具体化,python提供了特殊的语法糖可以非常方便的实现装饰模式. 系列文章 python设计模式之单例模 ...

  6. Python操作redis字符串(String)详解 (三)

    # -*- coding: utf-8 -*- import redis #这个redis不能用,请根据自己的需要修改 r =redis.Redis(host=") 1.SET 命令用于设置 ...

  7. pika详解(三)SelectConnection及其他Connection

    pika详解(三)SelectConnection及其他Connection   本文链接:https://blog.csdn.net/comprel/article/details/94661147 ...

  8. 传奇定时器OnTimer功能详解(泡点、时间触发、任务活动)

    传奇定时器OnTimer功能详解(泡点.时间触发.任务活动) 定时器功能,是传奇服务端中非常常见的一种功能,常见如:泡点脚本.赌博脚本,任务活动指定时间刷怪,时间触发一些都需要用到OnTimer功能, ...

  9. P2P技术详解(三):P2P技术之STUN、TURN、ICE详解

    1.内容概述 在现实Internet网络环境中,大多数计算机主机都位于防火墙或NAT之后,只有少部分主机能够直接接入Internet.很多时候,我们希望网络中的两台主机能够直接进行通信,即所谓的P2P ...

随机推荐

  1. javascript扩充基本类型的功能

    可以通过给Function.prototype增加方法来使得该方法对所有函数可用. 通过给Function.prototype增加一个method方法,下次给对象增加方法的时候就不必键入prototy ...

  2. lrzsz linix 远程文件传输工具。

    安装方法 #yum install lrzsz -y 使用方法 #rz -y 上传指定文档到当前目录

  3. cmake与autoconf+automake

    cmake与autoconf+automakes是同类的编译工具,本人常用的是cmake. 这有一篇对比的文章,记录一下. cmake与autoconf+automake的对比

  4. Python_socket

    TCP : 可靠传输,不安全,UDP: 安全传输,不可靠 一台机器上有2^16-1=65535个端口(1-1024)保留自己开就1024往上 socket (套接字):也可以理解为它是一个管道,用于描 ...

  5. mysql时间延时注入案例

    通过Burpsuite结合sqlmap发现如下接口存在时间盲注

  6. Codeforces 442D Adam and Tree dp (看题解)

    Adam and Tree 感觉非常巧妙的一题.. 如果对于一个已经建立完成的树, 那么我们可以用dp[ i ]表示染完 i 这棵子树, 并给从fa[ i ] -> i的条边也染色的最少颜色数. ...

  7. php第二天 开始连接数据库

    php连接数据库有三种方法,分别是mysqli面向对象,mysqli面向过程,pdo. 1.查了资料,最终选择则了mysqli面向过程的方式,运行效率应该要高一些. 代码如下 <?php $se ...

  8. 爬虫1 socket方式下载一张图片

    import socket import re client = socket.socket() # 图片url img_url = 'https://img03.sogoucdn.com/app/a ...

  9. Java 之 Web前端(二)

    1.Cookie (客户端所拥有) a.含义:服务器给浏览器的甜点 b.语法: //创建Cookie Cookie cookie = new Cookie("name", &quo ...

  10. appium-电脑连不上手机设备如何解决

    在自动化过程中,会遇到电脑无法连接到手机情况,首先在cmd命令输入adb devices查看是否报错,报错绝大可能是5037端口被占用了,因为adb默认绑定的是5037端口 1.查看占用端口的进程PI ...