一、elastic-job、elastic-job-lite-console使用案例
解决elastic-console在项目部署启动之后没有触发按钮:解决elastic-console在项目部署启动之后没有触发按钮_燕少༒江湖的博客-CSDN博客
- 关于配置文件每个属性的作用、怎么配置,参考当当网提供的文档就OK了
- elastic-job源码
- 配置cron表达式,如果不了解的,有一个生成cron表达式神器
一、elastic-job是当当网开源的分布式框架,实际生产中使用elastic-job做一些定时任务,比如定时生成文件、上传文件、发送邮件、发送短信等等。
二、我的环境
1、java version 1.8.0_161
2、Apache Maven 3.5.0
3、zookeeper3-4-10 zookeeper安装使用,Windows环境下安装类似Linux环境安装
三、案例
1、引入jar包
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>elasticJobDemo</groupId><artifactId>elasticJobDemo</artifactId><version>1.0-SNAPSHOT</version><dependencies><dependency><groupId>com.dangdang</groupId><artifactId>elastic-job-lite-core</artifactId><version>2.1.5</version></dependency><dependency><groupId>com.dangdang</groupId><artifactId>elastic-job-lite-spring</artifactId><version>2.1.5</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.1.2.RELEASE</version></dependency></dependencies>
</project>
2、JobA
package com.cn.dl.job;import com.dangdang.ddframe.job.api.ShardingContext;
import com.dangdang.ddframe.job.api.simple.SimpleJob;/*** Created by yanshao on 2018/12/5.*/
public class JobA implements SimpleJob {public void execute(ShardingContext shardingContext) {System.out.println("JobA>>>>>>>");}}
3、JobB
package com.cn.dl.job;import com.dangdang.ddframe.job.api.ShardingContext;
import com.dangdang.ddframe.job.api.simple.SimpleJob;/*** Created by yanshao on 2018/12/5.*/
public class JobB implements SimpleJob {public void execute(ShardingContext shardingContext) {System.out.println("JobB>>>>getJobName>>>"+shardingContext.getJobName());System.out.println("JobB>>>getShardingParameter>>>>"+shardingContext.getShardingParameter());System.out.println("JobB>>>>getTaskId>>>"+shardingContext.getTaskId());System.out.println("JobB>>>>getShardingItem>>>"+shardingContext.getShardingItem());System.out.println("JobB>>>>getShardingTotalCount>>>"+shardingContext.getShardingTotalCount());}}
4、ApplicationJob
package com.cn.dl.main;import org.springframework.context.support.ClassPathXmlApplicationContext;/*** Created by yanshao on 2018/12/5.*/
public class ApplicationJob {public static void main(String[] args) {new ClassPathXmlApplicationContext("application-job-config.xml");}}
5、application-job-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:reg="http://www.dangdang.com/schema/ddframe/reg"xmlns:job="http://www.dangdang.com/schema/ddframe/job"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.dangdang.com/schema/ddframe/reghttp://www.dangdang.com/schema/ddframe/reg/reg.xsdhttp://www.dangdang.com/schema/ddframe/jobhttp://www.dangdang.com/schema/ddframe/job/job.xsd"><reg:zookeeper id="jobRegister" server-lists="127.0.0.1:2181" namespace="elasticJobDemo"base-sleep-time-milliseconds="1000" max-sleep-time-milliseconds="3000" max-retries="3"/><job:simple id="jobA"class="com.cn.dl.job.JobA"registry-center-ref="jobRegister"cron="0/10 * * * * ? *"sharding-total-count="1"/><job:simple id="jobB"class="com.cn.dl.job.JobB"registry-center-ref="jobRegister"cron="0 0 04 * * ? *"sharding-total-count="1"/></beans>
6、测试
a、JobA每隔10s执行一次
time>>Wed Dec 05 21:10:00 CST 2018 JobA>>>>>>>
time>>Wed Dec 05 21:10:10 CST 2018 JobA>>>>>>>
time>>Wed Dec 05 21:10:20 CST 2018 JobA>>>>>>>
time>>Wed Dec 05 21:10:30 CST 2018 JobA>>>>>>>
time>>Wed Dec 05 21:10:40 CST 2018 JobA>>>>>>>
time>>Wed Dec 05 21:10:50 CST 2018 JobA>>>>>>>
time>>Wed Dec 05 21:11:00 CST 2018 JobA>>>>>>>
time>>Wed Dec 05 21:11:10 CST 2018 JobA>>>>>>>
time>>Wed Dec 05 21:11:20 CST 2018 JobA>>>>>>>
time>>Wed Dec 05 21:11:30 CST 2018 JobA>>>>>>>
time>>Wed Dec 05 21:11:40 CST 2018 JobA>>>>>>>
time>>Wed Dec 05 21:11:50 CST 2018 JobA>>>>>>>
time>>Wed Dec 05 21:12:00 CST 2018 JobA>>>>>>>
time>>Wed Dec 05 21:12:10 CST 2018 JobA>>>>>>>
time>>Wed Dec 05 21:12:20 CST 2018 JobA>>>>>>>
time>>Wed Dec 05 21:12:30 CST 2018 JobA>>>>>>>
time>>Wed Dec 05 21:12:40 CST 2018 JobA>>>>>>>
time>>Wed Dec 05 21:12:50 CST 2018 JobA>>>>>>>
time>>Wed Dec 05 21:13:00 CST 2018 JobA>>>>>>>
time>>Wed Dec 05 21:13:10 CST 2018 JobA>>>>>>>
time>>Wed Dec 05 21:13:20 CST 2018 JobA>>>>>>>
time>>Wed Dec 05 21:13:30 CST 2018 JobA>>>>>>>
time>>Wed Dec 05 21:13:40 CST 2018 JobA>>>>>>>
time>>Wed Dec 05 21:13:50 CST 2018 JobA>>>>>>>
time>>Wed Dec 05 21:14:00 CST 2018 JobA>>>>>>>
time>>Wed Dec 05 21:14:10 CST 2018 JobA>>>>>>>
time>>Wed Dec 05 21:14:20 CST 2018 JobA>>>>>>>
time>>Wed Dec 05 21:14:30 CST 2018 JobA>>>>>>>
JobB到凌晨4点执行一次
四、elastic-job-lite-console控制台
1、下载elastic-job源代码,地址:GitHub - apache/shardingsphere-elasticjob: Distributed scheduled job framework
2、解压在指定目录,然后编译生成elastic-job-lite-console-3.0.0.M1-SNAPSHOT.tar.gz压缩包
- 我解压在:E:\elasticejob\elastic-job-lite-dev
- 开发人员一般都安装了git,如果没有git,打开命令行也是一样的
- 执行命令:mvn clean install -Dmaven.test.skip=true,等大概5分钟左右就会编译生成,看到Build Success就OK
- 然后在E:\elasticejob\elastic-job-lite-dev\elastic-job-lite-console\target下,找到生成的elastic-job-lite-console-3.0.0.M1-SNAPSHOT.tar.gz压缩包
- 解压elastic-job-lite-console-3.0.0.M1-SNAPSHOT.tar.gz到指定目录
- 然后在解压目录下找到两个启动脚本,一个是Windows的,一个Linxu的
- 双击start.bat启动console
- 在浏览器中输入http://127.0.0.1:8899/,输入用户和密码,默认都是root
- 全局配置,前三个框分别输入:jobRegister、127.0.0.1:2181、elasticJobDemo
- 点击连接
- 打开作业维度,就看到当前两个任务了(前提是启动了ApplicationJob)
- 这里的修改按钮:我们可以修改配置在application-job-config.xml中的配置,一般我们只会修改Cron表达式
zookeeper命令:zookeeper安装以及使用_燕少༒江湖的博客-CSDN博客_zookeeper
我们在zookeeper注册中心可以看到我们配置的内容:cron="0/10 * * * * ? *"
比如我在console中把jobA的Cron表达式修改为:cron="0 0 12 * * ? *",然后重新获取值,发现cron的值修改了!
然后就只有jobB继续每隔10s执行一次了
同样我们可以修改其它内容,zookeeper中的节点内容就会被修改;
触发按钮是我们点击一次,任务就会执行一次;
点击失效,任务暂时不能执行,然后点击生效才会继续在固定时间执行任务;
点击终止,该任务就没有生效一说了,当前任务就下线了,如果想要继续在固定时间执行任务,只能restart 项目了。
ShardingContext 对象有这几个主要方法,主要是为了应对一个job中不同的执行任务,比如:我们要给用户发送邮件,我们把用户分成A、B两组,两组邮件除了邮件主题不同,其它内容都相同,这时候我们可以通过配置sharding-item-parameters来进行区分两组邮件,然后同时给用户发送邮件。
- 修改elastic-job-console中jobB的配置
IDE打印结果:
到这里本地使用elastic-job就差不多了,看看当当网的文档,自己再试试。还有一个问题,我们如何将这个Demo打成jar包扔在Linux服务器上执行?elastic-job-console不需要再折腾了,扔上去执行启动脚本就OK了,还有就是elastic-job-console我们可以修改密码和端口号,我是用winrar打开修改的。
一、elastic-job、elastic-job-lite-console使用案例相关推荐
- Elastic:Elastic Stack 7.6.0 重磅发布
我们非常兴奋地宣布 Elastic Stack 7.6 正式发布了.此版本借助新推出的 SIEM 检测引擎和与 MITRE ATT&CK™ 知识库相相匹配的精选检测规则集,简化了自动威胁检测过 ...
- Elastic:Elastic Stack 8.0.0-alpha1 发布
虽然 7.x 次要版本继续提供一个又一个功能,但我们很高兴地宣布 8.0.0 的第一个公开 alpha. 在我们继续这个令人兴奋的消息之前,我们想提醒你这是一个 alpha 版本. 我们建议你与生产保 ...
- ElasticJob Lite Console 处于分片待调整状态,无法触发解决方案
将对应job的触发时间改成最近的,比如当前时间17:49:00,那就把Cron表达式改成下一分钟:0 50 17 * * ? ,当自动触发过一次后,状态就会变成 因为要触发过,才会让你操作. 记得,改 ...
- The Elastic Stack (ELK)7.14:简单配置到SSL配置教程(带Beats部署)
文章目录 一.简介 二.环境 1.安装Docker.Docker Compose 三.部署Elastic Stack(ELK) 1.部署ElasticSearch(Distributed, RESTf ...
- Spring Boot 2.x基础教程:使用Elastic Job实现定时任务
上一篇,我们介绍了如何使用Spring Boot自带的@Scheduled注解实现定时任务(https://blog.didispace.com/spring-boot-learning-2-7-1/ ...
- Elastic Search入门:架构说明及Docker方式体验
Elastic Search简称ES,是一款在搜索和日志检索领域极其成功的开源产品,当然ES背后的商业化公司也很成功.很多大的知名品牌,像是SAP.Booking.Ebay都在使用ES, 今天就来实际 ...
- Elastic AMP监控.NET程序性能
什么是Elastic AMP Elastic APM 是一个应用程序性能监控系统.它可以请求的响应时间.数据库查询.对缓存的调用.外部 HTTP 请求等的详细性能信息,可以实时监控软件服务和应用程序. ...
- 使用Elastic APM监控你的.NET Core应用
前言 在应用实际的运维过程中,我们需要更多的日志和监控来让我们对自己的应用程序的运行状况有一个全方位的了解.然而对于大部分开发者而言,平时大家所关注的更多的是如何更优雅的实现业务,或者是如何让应用的响 ...
- 用elastic stack来分析下你的redis slowlog
redis是目前最流行的 NoSQL 内存数据库,然而如果在使用过程中出现滥用.乱用的情况,很容易发生性能问题,此时我们就要去关注慢查询日志,本文尝试给大家介绍一种通过 elastic stack 来 ...
- Elastic 7.10 发布了可搜索快照的公测版和 Kibana Lens 的正式版
我们非常高兴地宣布 Elastic 7.10 版正式发布.这一新版本为基于 Elastic Stack(包括 Elasticsearch.Kibana.Beats 和 Logstash)构建而成的 E ...
最新文章
- python编程求导数_Python求导数的方法
- 通用分页实现及其OO设计探讨
- mysql的付费功能_MYSQL对游戏用户付费行为分析
- 逻辑漏洞之任意用户登陆漏洞
- LINUX之前UNIX的历史
- confd_confd + Nacos | 无代码侵入的配置变更管理
- 番石榴15 –新功能
- Angular之ngx-permissions的角色管理
- 作者:潘永花,阿里数据经济研究中心秘书长,阿里研究院高级专家。
- win7 oracle数据库删除用户名,win7操作系统、 oracle10g 数据库创建、卸载 用户名的创建 、删除...
- 主流数据库连接池性能比较 hikari druid c3p0 dbcp jdbc
- tensorflow2.1学习--常用函数三
- [BI项目记]-搭建代码管理环境之创建团队项目
- HiveSqlSparkSql —— 使用left semi join做in、exists类型子查询优化
- 【MySQL】MySQL数据库结构与操作
- fooview辅助功能 shell_FV浮动阅览器fooView——一款功能十分强大的浮动按钮
- 人工智能人才缺口达500万,北京大学、天津大学、复旦大学、深圳大学等多所高校布局人工智能人才培养
- [Qt] QWidget QWindow 窗口管理器(WM)
- 易维php使用介绍,Web易维版:AR配置三层组网管理「AP + 傻瓜交换机+三层交换机 + AR」...
- Android图形显示系统——一张图片的显示流程