如何在SpringBoot中使用ElaticJob定时器
发表于:2023-03-24 作者:安全数据网编辑
编辑最后更新 2023年03月24日,如何在SpringBoot中使用ElaticJob定时器?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。POM文件配置
如何在SpringBoot中使用ElaticJob定时器?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
POM文件配置
4.0.0 com.example demojob 0.0.1-SNAPSHOT jar demojob Demo project for Spring Boot org.springframework.boot spring-boot-starter-parent 2.0.2.RELEASE UTF-8 UTF-8 1.8 org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-test test elastic-job-common-core com.dangdang 2.1.5 elastic-job-lite-core com.dangdang 2.1.5 elastic-job-lite-spring com.dangdang 2.1.5 elastic-job-cloud-executor com.dangdang 2.1.5 org.mariadb.jdbc mariadb-java-client 1.5.4 com.alibaba druid-spring-boot-starter 1.1.9 com.baomidou mybatisplus-spring-boot-starter 1.0.5 com.baomidou mybatis-plus 2.1.9 org.springframework.boot spring-boot-maven-plugin
yaml文件配置(也可以用application.properties一样的)
# 配置配置数据源spring: datasource: type: com.alibaba.druid.pool.DruidDataSource driver-class-name: org.mariadb.jdbc.Driver name: elastic-job-event url: jdbc:mariadb://127.0.0.1:3306/elasticjob username: root password: 123456 druid: validationQuery: SELECT 1 initialSize: 10 minIdle: 10 maxActive: 200 minEvictableIdleTimeMillis: 180000 testOnBorrow: false testWhileIdle: true removeAbandoned: true removeAbandonedTimeout: 1800 logAbandoned: true poolPreparedStatements: true maxOpenPreparedStatements: 100# 配置ZookeeperregCenter: serverList: localhost:2181 namespace: hulk_order_task# 配置定时器规则simpleJob: cron: 0/5 * * * * ? shardingTotalCount: 1 shardingItemParameters: 0=1
开始写代码
RegistryCenterConfig
package com.example.demojob.config;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;/** * 注册中心配置 * 用于注册和协调作业分布式行为的组件,目前仅支持Zookeeper。 * @author shudalei */@Configuration@ConditionalOn_Expression("'${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)); }}
JobEventConfig
package com.example.demojob.config;import com.dangdang.ddframe.job.event.JobEventConfiguration;import com.dangdang.ddframe.job.event.rdb.JobEventRdbConfiguration;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import javax.annotation.Resource;import javax.sql.DataSource;/** * 如果想把作业运行的内容写到DB中,我们需要用到另一个构造器, * 同时定义自己的JobEventConfiguration, * 目前来说实现这个接口的只有一个类JobEventRdbConfiguration, * 通过这个可以将作业运行的痕迹进行持久化到DB的操作。 * @author shudalei */@Configurationpublic class JobEventConfig { @Resource private DataSource dataSource; @Bean public JobEventConfiguration jobEventConfiguration() { return new JobEventRdbConfiguration(dataSource); }}
SimpleJobConfig
package com.example.demojob.config;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;import com.example.demojob.job.TestSimpleJob;import org.springframework.beans.factory.annotation.Value;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import javax.annotation.Resource;@Configurationpublic class SimpleJobConfig { /** * 注册中心 */ @Resource private ZookeeperRegistryCenter regCenter; /** * job事件配置 */ @Resource private JobEventConfiguration jobEventConfiguration; /** * 微信access token获取任务对象 * */ @Resource private TestSimpleJob simpleJob; /** * * @param cron 定时任务cron配置 * @param shardingTotalCount 任务分片数 * @param shardingItemParameters 任务分片参数 * @return JobScheduler 任务调度器 */ @Bean(initMethod = "init") public JobScheduler simpleJobScheduler(@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); } /** * * @param jobClass 任务调度类 * @param cron 定时任务cron配置 * @param shardingTotalCount 任务分片数 * @param shardingItemParameters 任务分片参数 * @return LiteJobConfiguration 任务配置 */ private LiteJobConfiguration getLiteJobConfiguration(final Class extends com.dangdang.ddframe.job.api.simple.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(); }}
TestSimpleJob,定时器任务本身
package com.example.demojob.job;import com.dangdang.ddframe.job.api.ShardingContext;import com.dangdang.ddframe.job.api.simple.SimpleJob;import org.springframework.stereotype.Component;@Componentpublic class TestSimpleJob implements SimpleJob { private int count; //任务就是每5秒执行一次控制台输出1,2,3…… @Override public void execute(ShardingContext shardingContext) { count++; System.out.println("task " + count); }}
最后在Docker下安装 Zookeeper
安装脚本compose文件如下
version: '2'services: zookeeper01: image: zookeeper restart: always hostname: zookeeper01 ports: - 2181:2181 environment: ZOO_MY_ID: 1 ZOO_SERVERS: server.1=0.0.0.0:2888:3888 server.2=zookeeper02:2888:3888 server.3=zookeeper03:2888:3888 zookeeper02: image: zookeeper restart: always hostname: zookeeper02 ports: - 2182:2181 environment: ZOO_MY_ID: 2 ZOO_SERVERS: server.1=zookeeper01:2888:3888 server.2=0.0.0.0:2888:3888 server.3=zookeeper03:2888:3888 zookeeper03: image: zookeeper restart: always hostname: zookeeper03 ports: - 2183:2181 environment: ZOO_MY_ID: 3 ZOO_SERVERS: server.1=zookeeper01:2888:3888 server.2=zookeeper02:2888:3888 server.3=0.0.0.0:2888:3888
springboot是什么
springboot一种全新的编程规范,其设计目的是用来简化新Spring应用的初始搭建以及开发过程,SpringBoot也是一个服务于框架的框架,服务范围是简化配置文件。
看完上述内容,你们掌握如何在SpringBoot中使用ElaticJob定时器的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!
c语言网络技术和编程语言总结
c语言对应的三级考试网络技术
网站服务器后台如何加防护密码
c语言软件开发步骤
c语言中网络技术知识点
服务器对权限提升的防护措施
怎么在阿里云租服务器
黑苹果能做web服务器吗
c语言和网络技术哪个好考
云服务器2核4G是什么性能
字节文档数据库
医疗信息网络安全风险评估
软件开发流程及成本
wetest测美国服务器
设计一个数据库安全方案.
网络安全防护生产厂家
软件开发c段
北仑手机软件开发选哪家
泽文学院服务器
数据库分表方式
杭州电商软件开发定做
access查询数据库
服务器拔刀
从事危害网络安全的活动受到刑事
广州网络安全运维找哪家
6s无法启动账号 无服务器
卫健委网络安全自查报告
湖州软件开发驻场哪个好
世界互联网领先科技成果公司
seriesname数据库
服务器安全防需要做哪些
云服务器选什么类型合适
泰拉瑞亚服务器管理工具
常见数据库安全漏洞
软件开发师的薪资
中国最新网络技术
软件开发培训班的技术优势
广州斯麦格网络技术
海康威视自动校时服务器地址
四川惠普服务器虚拟化定制服务器