elastic job是当当网开源的一个分布式定时任务
1、安装zookeeper,可在官网http://zookeeper.apache.org/下载
2、添加依赖
<properties> <java.version>1.8</java.version> <elastic-job.version>2.1.5</elastic-job.version> <curator.version>2.10.0</curator.version> </properties> <dependency> <artifactId>elastic-job-common-core</artifactId> <groupId>com.dangdang</groupId> <version>${elastic-job.version}</version> </dependency> <dependency> <artifactId>elastic-job-lite-core</artifactId> <groupId>com.dangdang</groupId> <version>${elastic-job.version}</version> </dependency> <dependency> <artifactId>elastic-job-lite-spring</artifactId> <groupId>com.dangdang</groupId> <version>${elastic-job.version}</version> </dependency> <dependency> <groupId>org.apache.curator</groupId> <artifactId>curator-test</artifactId> <version>${curator.version}</version> </dependency>
3、配置zookeeper注册中心
import com.dangdang.ddframe.job.reg.zookeeper.ZookeeperConfiguration; import com.dangdang.ddframe.job.reg.zookeeper.ZookeeperRegistryCenter; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; /** * @author Administrator *@date 2017年9月28日 */ @Configuration @ConditionalOnExpression("'${regCenter.serverList}'.length() > 0") public class RegistryCenterConfig { @Bean(initMethod = "init") public ZookeeperRegistryCenter regCenter(@Value("${regCenter.serverList}") final String serverList, @Value("${regCenter.namespace}") final String namespace) { return new ZookeeperRegistryCenter(new ZookeeperConfiguration(serverList, namespace)); } }
4、持久化配置
import javax.annotation.Resource; import javax.sql.DataSource; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import com.dangdang.ddframe.job.event.JobEventConfiguration; import com.dangdang.ddframe.job.event.rdb.JobEventRdbConfiguration; /** * @author Administrator * @date 2017年9月28日 */ @Configuration public class JobEventConfig { @Resource private DataSource dataSource; @Bean public JobEventConfiguration jobEventConfiguration() { return new JobEventRdbConfiguration(dataSource); } }
5、配置文件application.properties配置,配置zookeeper和elastic job的执行时间、分片数、和定义分片参即shardingItemParameter,可以和分片项匹配对应关系,用于将分片项的数字转换为更加可读的业务代码
regCenter.serverList= 127.0.0.1:2181 regCenter.namespace= elastic-job simpleJob.cron=0/5 * * * * ? simpleJob.shardingTotalCount=3 simpleJob.shardingItemParameters=0=A,1=B,2=C
6、任务配置类
import javax.annotation.Resource; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import com.chaos.webapi.job.ProfitLossOrderJob; import com.chaos.webapi.job.SpringSimpleJob; 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.lite.api.JobScheduler; import com.dangdang.ddframe.job.lite.config.LiteJobConfiguration; import com.dangdang.ddframe.job.lite.spring.api.SpringJobScheduler; import com.dangdang.ddframe.job.reg.zookeeper.ZookeeperRegistryCenter; /** * @author Administrator *@date 2017年9月28日 */ @Configuration public class SimpleJobConfig { @Resource private ZookeeperRegistryCenter regCenter; @Resource private JobEventConfiguration jobEventConfiguration; @Bean public SimpleJob simpleJob() { return new SpringSimpleJob(); } @Bean public ProfitLossOrderJob pofitLossOrderJob() { return new ProfitLossOrderJob(); } @Bean(initMethod = "init") public JobScheduler simpleJobScheduler(final SimpleJob simpleJob, @Value("${simpleJob.cron}") final String cron, @Value("${simpleJob.shardingTotalCount}") final int shardingTotalCount, @Value("${simpleJob.shardingItemParameters}") final String shardingItemParameters) { return new SpringJobScheduler(simpleJob, regCenter, getLiteJobConfiguration(simpleJob.getClass(), cron, shardingTotalCount, shardingItemParameters), jobEventConfiguration); } 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(); } }
7、任务执行类
import com.dangdang.ddframe.job.api.ShardingContext; import com.dangdang.ddframe.job.api.simple.SimpleJob; /** * @author Administrator *@date 2017年9月28日 */ public class SpringSimpleJob implements SimpleJob { @Override public void execute(final ShardingContext shardingContext){ System.out.println("当前分片:"+shardingContext.getShardingItem()+"---"+shardingContext.getShardingParameter()); } }
8、任务执行结果
以上只是执行一个简单的打印语句,实际应用可以结合数据库的分库分表完成分片项和业务逻辑的对应关系。
相关推荐
在SpringBoot项目中集成Elastic-Job,主要步骤包括: 1. **添加依赖**: pom.xml文件中需引入Elastic-Job的依赖,如`<dependency>`标签下的坐标。 2. **配置注册中心**: 在SpringBoot的配置文件(application.yml或...
本文将详细介绍如何在SpringBoot中集成Elastic-Job,并探讨其核心特性——作业分片。 1. **作业分片**: - 分片概念:作业分片是Elastic-Job的核心特性之一,它将一个大型任务拆分成多个可独立执行的小任务(分片...
该项目为基于SpringBoot的Elastic-Job分布式定时任务解决方案的集成设计与源码,共81个文件,涵盖57个Java源文件、6个PNG图片文件、5个XML配置文件以及少量其他类型的文件。该方案旨在快速集成当当网的Elastic Job,...
4. **使用@ElasticJob注解**:在Job接口实现类上使用ElasticJob提供的注解,如`@ElasticJob(name = "作业名称", cron = "cron表达式", registryCenterConfiguration = "@bean 'zookeeperRegistryCenter'")`,这将...
本篇文章主要介绍了 SpringBoot 整合 Elasticsearch 实践,通过一个发表文章的案例来说明 SpringBoot 如何与 Elasticsearch 集成。Elasticsearch 本身可以是一个独立的服务,也可以嵌入我们的 Web 应用中,在本案例...
三、SpringBoot集成Elastic-Job Lite 在SpringBoot项目中集成Elastic-Job Lite,首先需要引入依赖: ```xml <groupId>com.dangdang</groupId> <artifactId>elastic-job-lite-core 版本号 ``` 然后,配置...
这里以Elastic-Job-lite为例,跟SpringBoot进行整合,当当的官方文档中并没有对SpringBoot集成作说明,所有的配置都是基于文档中的xml的配置修改出来的。 起步 准备好一个SpringBoot的项目,pom.xml中引入Elastic-...
**SpringBoot集成ElasticJob定时器** 在现代的微服务架构中,定时任务的管理和调度是必不可少的一部分。ElasticJob是由当当网开源的一个分布式任务调度框架,它结合了 Quartz 和 ZooKeeper,提供了分布式任务的注册...
弹性工作弹簧靴 :fire: :fire: :fire:相关文档请访问 :fire: :fire: :fire:1简介Elastic-Job是一个分布式调度解决方案,由两个相互独立的子项目Elastic-Job-Lite和Elastic-Job-Cloud组成。Elastic Elastic-Job-Lite...
总结来说,SpringBoot集成ElasticJob定时器的关键步骤包括: 1. 添加ElasticJob相关依赖。 2. 创建配置类,注入`CoordinatorRegistryCenter`和自定义任务类。 3. 配置并注册作业到注册中心。 4. 配置注册中心的连接...
● 定时任务调度:ElasticJob+Zookeeper ● 数据持久框架:MyBatis ● 数据库连接池:Alibaba Druid ● 系统监控插件:JavaMelody+Druid ● 系统缓存框架:Redis ● 系统前端框架:Freemaker+Bootstrap+Layui ● ...
这些技术组合在一起,可以构建出一个完整的微服务架构体系:SpringBoot和SpringCloud负责服务的开发和治理,Nacos提供服务发现和配置管理,MinIO用于存储中间结果或日志文件,XXL-Job实现任务调度,而Kibana则帮助...
对于日志来说,最常见的需求就是收集、存储、查询、展示,开源社区正好有相对应的开源项目:logstash(收集)、elasticsearch(存储+搜索)、kibana(展示),我们将这三个组合起来的技术称之为ELK,所以说ELK指的是...
本项目聚焦于使用分布式锁或特定的xxx-job来实现这样的功能,结合了SpringBoot框架,使得集成与部署更加简便。 首先,SpringBoot以其快速开发和微服务特性在IT行业中广受欢迎。通过SpringBoot,我们可以轻松地构建...
job(`分布式定时任务`)、swagger(`API接口管理测试`)、security(`基于RBAC的动态权限认证`)、SpringSession(`Session共享`)、Zookeeper(`结合AOP实现分布式锁`)、RabbitMQ(`消息队列`)、Kafka(`消息队列`)、...
Elastic-job:当当网的分布式作业框架。 OSS:阿里云对象存储服务(Object Storage Service,简称OSS),是阿里云对外提供的海量,安全,低成本,高可靠的云存储服务。 Dubbox:Dubbox now means Dubbo eXtensions,Dubbo是...
:Spring Boot 集成 WebSocket 实现服务端推送消息到客户端:Spring Boot 集成 Elasticsearch 实战:Spring Boot 集成阿里云 OSS 进行文件存储:Spring Boot 集成 Redis 实现数据缓存:Spring Boot 优雅地发送邮件:Spring...
> elastic-job : 分布式作业调度系统, 依赖zookeeper环境作为分布式协同 > WebMagic : 爬虫框架,有去重功能,支持Xpath、regex、css等选择器 三. 运行方式 先启动`zookeeper`和`elasticsearch` , 并修改相应...
1. **SpringBoot集成Quartz或Scheduled** - **Quartz** 是一个强大的、完全开源的作业调度框架,支持复杂的调度需求。SpringBoot可以通过添加`quartz-scheduler`依赖来集成Quartz。 - **SpringBoot的@Scheduled...
分布式任务调度:elastic-job 持久层框架:MyBatis、通用Mapper4、Mybatis_PageHelper 数据库连接池:Alibaba Druid 日志管理:Logback 前端框架:Vue全家桶以及相关组件 三方服务: 邮件服务、阿里云短信服务...