文档章节

Elastic-Job作业动态维护

javahao
 javahao
发布于 2017/07/24 17:51
字数 602
阅读 142
收藏 0
点赞 0
评论 0

#Elastic-Job是什么? 简单的说他是一个可集群,具有容错处理机制的作业调度平台,这里就不做过多阐述,自行搜索

参考资料1参考资料2参考资料3

#Elastic-Job作业动态配置 1、通过查看源码_JobScheduleController_,其实dangdang团队已经考虑到动态配置作业的业务场景,只不过在文档中并没有明确指出(也许是我没有看到相关文档),_JobScheduleController_类里面就封装了作业的控制方法,比如:_shutdown_关闭作业调度,_rescheduleJob_重新调度作业,_pauseJob_暂停作业等等。。。

2、还有一个关键类_JobRegistry_,他是一个单例类,在这个类里面有一个私有实例变量_schedulerMap_,它里面存储着作业名称跟作业控制器的对应关系,这样我们就能通过作业名称从变量中获取到作业控制器,通过作业调度控制器中的方法,配置我们的作业。

#废话不多说,上我们的代码 作者拿springboot做的案例,其他案例类型原理差不多,简单案例代码如下:

package com.dangdang.ddframe.job.example.controller;

import com.dangdang.ddframe.job.api.simple.SimpleJob;
import com.dangdang.ddframe.job.config.JobCoreConfiguration;
import com.dangdang.ddframe.job.config.simple.SimpleJobConfiguration;
import com.dangdang.ddframe.job.event.JobEventConfiguration;
import com.dangdang.ddframe.job.example.job.simple.JavaSimpleJob;
import com.dangdang.ddframe.job.lite.config.LiteJobConfiguration;
import com.dangdang.ddframe.job.lite.internal.schedule.JobRegistry;
import com.dangdang.ddframe.job.lite.spring.api.SpringJobScheduler;
import com.dangdang.ddframe.job.reg.zookeeper.ZookeeperRegistryCenter;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;

/**
 * usedfor:作业动态配置
 * Created by javahao on 2017/7/24.
 * auth:JavaHao
 */
@RestController
@RequestMapping("/scheduler")
public class SchedulerController {

    @Resource
    private ZookeeperRegistryCenter regCenter;

    @Resource
    private JobEventConfiguration jobEventConfiguration;


    private void add(final SimpleJob simpleJob, final String cron,  final int shardingTotalCount,
                                           final String shardingItemParameters) {
        new SpringJobScheduler(simpleJob, regCenter,
                getLiteJobConfiguration(simpleJob.getClass(), cron, shardingTotalCount, shardingItemParameters),
                jobEventConfiguration).init();
    }

    private LiteJobConfiguration getLiteJobConfiguration(final Class<? extends SimpleJob> jobClass, final String cron, final int shardingTotalCount, final String shardingItemParameters) {
        return LiteJobConfiguration.newBuilder(new SimpleJobConfiguration(JobCoreConfiguration.newBuilder(
                jobClass.getName(), cron, shardingTotalCount).shardingItemParameters(shardingItemParameters).build(), jobClass.getCanonicalName())).overwrite(true).build();
    }

    /**
     * 增加一个作业调度
     * @return 成功标识
     */
    @RequestMapping("/add")
    public boolean add(){
        add(new JavaSimpleJob(),"0/5 * * * * ?",3,"0=Beijing,1=Shanghai,2=Guangzhou");
        return true;
    }
    /**
     * 修改一个作业调度
     * @return 成功标识
     */
    @RequestMapping("/update")
    public boolean update(){
        JobRegistry.getInstance().getJobScheduleController(JavaSimpleJob.class.getName()).rescheduleJob("0/20 * * * * ?");
        return true;
    }
    /**
     * 删除一个作业调度
     * @return 成功标识
     */
    @RequestMapping("/delete")
    public boolean delete(){
        JobRegistry.getInstance().getJobScheduleController(JavaSimpleJob.class.getName()).shutdown();
        return true;
    }
}

这样我们就可以根据自己的业务场景,设计任务调度表结构,在服务启动前加载预制的调度作业,在服务启动过程中,用户可根据自己的需要增加、修改作业,维护作业调度时间周期等等。哈哈,是不是扩展还是比较灵活的?

© 著作权归作者所有

共有 人打赏支持
javahao
粉丝 2
博文 10
码字总数 11029
作品 0
济南
高级程序员
分布式定时任务Elastic-Job框架在SpringBoot工程中的应用实践(二)

文章摘要:在生产环境中部署Elastic-Job集群后,那么如何来运维监控线上跑着的定时任务呢? 如果在生产环境的大规模服务器集群上部署了集成Elastic-Job的业务工程,而没有相应的运维监控工具...

癫狂侠 ⋅ 05/15 ⋅ 0

SpringBoot整合Elastic-Job,实现动态创建定时任务,任务持久化

SpringBoot使用Elastic-Job-lite,实现动态创建定时任务,任务持久化 Elastic-Job是当当开源的一个分布式调度解决方案,由两个相互独立的子项目Elastic-Job-Lite和Elastic-Job-Cloud组成。 ...

oppo5630 ⋅ 04/16 ⋅ 0

分布式定时任务调度平台Elastic-Job技术详解

在我们的项目当中,使用定时任务是避免不了的,我们在部署定时任务时,通常只部署一台机器。部署多台机器时,同一个任务会执行多次。比如给用户发送邮件定时任务,每天定时的给用户下发邮件。...

adi851270440 ⋅ 05/29 ⋅ 0

分布式定时任务Elastic-Job框架在SpringBoot工程中的应用实践(一)

摘要:如何构建具备作业分片和弹性扩缩容的定时任务系统是每个大型业务系统在设计时需要考虑的重要问题? 对于构建一般的业务系统来说,使用Quartz或者Spring Task即可基本满足我们的单体服用...

癫狂侠 ⋅ 05/12 ⋅ 0

分布式作业 Elastic-Job 快速上手指南,从理论到实战一文搞定!

Elastic-Job支持 JAVA API 和 Spring 配置两种方式配置任务,这里我们使用 JAVA API 的形式来创建一个简单的任务入门,现在都是 Spring Boot 时代了,所以不建议使用 Spring 配置文件的形式。...

Java技术栈 ⋅ 05/22 ⋅ 0

Centos6搭建elk系统,监控IIS日志

**所需程序: 服务器端:java、elasticsearch、kikbana 客 户 端:IIS、logstash** 一、服务器端(192.168.10.46)操作: 先建立一个ELK专门的目录: [root@Cent65 ~]mkdir /elk/ 上传到elk...

D杀手D ⋅ 04/24 ⋅ 0

Elasticsearch中文分词研究

一、ES分析器简介 ES是一个实时搜索与数据分析引擎,为了完成搜索功能,必须对原始数据进行分析、拆解,以建立索引,从而实现搜索功能; ES对数据分析、拆解过程如下: 首先,将一块文本分成...

zhaipengfei1231 ⋅ 04/18 ⋅ 0

elasticsearch-head 安装介绍

elasticsearch-head 是用于监控 Elasticsearch 状态的客户端插件,包括数据可视化、执行增删改查操作等。elasticsearch-head 插件的安装在 Linux 和 Windows 没什么区别,安装之前确保当前系...

BeckJin ⋅ 05/19 ⋅ 0

当ES赶超Redis,这份ES进修攻略不容错过!

从4月DB-Engines最新发布的全球数据库排名中,我们赫然发现ElasticSearch逆袭超越了Redis,从原先的第9名上升至第8名,而Redis则落后一名,排在了其后。 事实上,这场逆袭并不算太让人意外。...

DBAplus社群 ⋅ 04/15 ⋅ 0

CTO详细讲解海量日志处理ELK

ELK实时日志分析平台之Elasticsearch简介 Elasticsearch是一个高度灵活的开源全文检索和分析引擎。它能够迅速(几乎是实时地)地存储、查找和分析大规模数据。通常被用在有复杂的搜索要求的系...

Java架构分享 ⋅ 05/23 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

tcp/ip详解-链路层

简介 设计链路层的目的: 为IP模块发送和接收IP数据报 为ARP模块发送ARP请求和接收ARP应答 为RARP模块发送RARP请求和接收RARP应答 TCP/IP支持多种链路层协议,如以太网、令牌环往、FDDI、RS-...

loda0128 ⋅ 今天 ⋅ 0

spring.net aop代码例子

https://www.cnblogs.com/haogj/archive/2011/10/12/2207916.html

whoisliang ⋅ 今天 ⋅ 0

发送短信如何限制1小时内最多发送11条短信

发送短信如何限制1小时内最多发送11条短信 场景: 发送短信属于付费业务,有时为了防止短信攻击,需要限制发送短信的频率,例如在1个小时之内最多发送11条短信. 如何实现呢? 思路有两个 截至到当...

黄威 ⋅ 昨天 ⋅ 0

mysql5.7系列修改root默认密码

操作系统为centos7 64 1、修改 /etc/my.cnf,在 [mysqld] 小节下添加一行:skip-grant-tables=1 这一行配置让 mysqld 启动时不对密码进行验证 2、重启 mysqld 服务:systemctl restart mysql...

sskill ⋅ 昨天 ⋅ 0

Intellij IDEA神器常用技巧六-Debug详解

在调试代码的时候,你的项目得debug模式启动,也就是点那个绿色的甲虫启动服务器,然后,就可以在代码里面断点调试啦。下面不要在意,这个快捷键具体是啥,因为,这个keymap是可以自己配置的...

Mkeeper ⋅ 昨天 ⋅ 0

zip压缩工具、tar打包、打包并压缩

zip 支持压缩目录 1.在/tmp/目录下创建目录(study_zip)及文件 root@yolks1 study_zip]# !treetree 11└── 2 └── 3 └── test_zip.txt2 directories, 1 file 2.yum...

蛋黄Yolks ⋅ 昨天 ⋅ 0

聊聊HystrixThreadPool

序 本文主要研究一下HystrixThreadPool HystrixThreadPool hystrix-core-1.5.12-sources.jar!/com/netflix/hystrix/HystrixThreadPool.java /** * ThreadPool used to executed {@link Hys......

go4it ⋅ 昨天 ⋅ 0

容器之上传镜像到Docker hub

Docker hub在国内可以访问,首先要创建一个账号,这个后面会用到,我是用126邮箱注册的。 1. docker login List-1 Username不能使用你注册的邮箱,要用使用注册时用的username;要输入密码 ...

汉斯-冯-拉特 ⋅ 昨天 ⋅ 0

SpringBoot简单使用ehcache

1,SpringBoot版本 2.0.3.RELEASE ①,pom.xml <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.0.3.RELE......

暗中观察 ⋅ 昨天 ⋅ 0

Spring源码解析(八)——实例创建(下)

前言 来到实例创建的最后一节,前面已经将一个实例通过不同方式(工厂方法、构造器注入、默认构造器)给创建出来了,下面我们要对创建出来的实例进行一些“加工”处理。 源码解读 回顾下之前...

MarvelCode ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部