SpringBoot整合Elastic-Job 2.1.53版本任务调度,手动任务,动态添加任务演示

前提:zookeeper安装并成功运行

1 pom依赖

<dependency><groupId>com.github.kuhn-he</groupId><artifactId>elastic-job-lite-spring-boot-starter</artifactId><version>2.1.53</version>
</dependency>

2 yml配置

#演示静态任务
elaticjob:zookeeper:server-lists: 127.0.0.1:2181namespace: synctask#演示动态定时任务案例
dynamiczk: 127.0.0.1:2181
dynamicnamespace: dynamictask


手动任务,分片任务演示

import com.dangdang.ddframe.job.api.ShardingContext;
import com.dangdang.ddframe.job.api.simple.SimpleJob;
import com.dangdang.elasticjob.lite.annotation.ElasticSimpleJob;
import com.example.sdfsdfsdfsf_renwu.mapper.TbShopMapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;/**** 1:执行周期* 2:分片* 3:指定Zookeeper中的命名空间*/
@ElasticSimpleJob(cron = "0/5 * * * * ?",jobName = "firstJob_1",shardingTotalCount = 3,jobParameter = "测试参数",shardingItemParameters = "0=zhangsan,1=lishi,2=wangwu")
@Component
@Slf4j
public class StaticJobTask implements SimpleJob {@Autowiredprivate TbShopMapper tbShopMapper;//执行的作业@Overridepublic void execute(ShardingContext shardingContext) {log.info("\nThread ID: {}\n任务总片数: {}\n当前分片项: {}\n当前参数: {}\n当前任务名称: {}\n当前任务参数: {}\n当前任务的id: {}\n",//获取当前线程的idThread.currentThread().getId(),//获取任务总片数shardingContext.getShardingTotalCount(),//获取当前分片项shardingContext.getShardingItem(),//获取当前的参数shardingContext.getShardingParameter(),//获取当前的任务名称shardingContext.getJobName(),//获取当前任务参数shardingContext.getJobParameter(),//获取任务的idshardingContext.getTaskId());}
}



动态添加执行任务演示


a 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.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class DynamicConfig {@Value("${dynamiczk}")private String dynamiczk;@Value("${dynamicnamespace}")private String dynamicnamespace;/***** 指定当前注册地址信息*/@Beanpublic ZookeeperConfiguration zookeeperConfiguration() {return new ZookeeperConfiguration(dynamiczk,dynamicnamespace);}/***** 向Zookeeper服务注册*/@Bean(initMethod = "init")public ZookeeperRegistryCenter zookeeperRegistryCenter(ZookeeperConfiguration zookeeperConfiguration){return new ZookeeperRegistryCenter(zookeeperConfiguration);}
}

b 执行任务的逻辑

import com.dangdang.ddframe.job.api.ShardingContext;
import com.dangdang.ddframe.job.api.simple.SimpleJob;public class DynamicJob implements SimpleJob {//执行的作业@Overridepublic void execute(ShardingContext shardingContext) {System.out.println("执行任务的逻辑");}
}

c 任务作业创建

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.lite.config.LiteJobConfiguration;
import com.dangdang.ddframe.job.lite.spring.api.SpringJobScheduler;
import com.dangdang.ddframe.job.reg.zookeeper.ZookeeperRegistryCenter;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;@Component
public class DynamicTaskCreate {@Autowiredprivate ZookeeperRegistryCenter zookeeperRegistryCenter;/**** 作业创建* @param jobName:作业名字* @param cron:表达式* @param shardingTotalCount:分片数量* @param instance:作业实例* @param parameters:额外参数*/public void create(String jobName, String cron, int shardingTotalCount, SimpleJob instance,String parameters){//1.配置作业->Builder->构建:LiteJobConfigurationLiteJobConfiguration.Builder builder = LiteJobConfiguration.newBuilder(new SimpleJobConfiguration(JobCoreConfiguration.newBuilder(jobName,cron,shardingTotalCount).jobParameter(parameters).build(),instance.getClass().getName())).overwrite(true);LiteJobConfiguration liteJobConfiguration = builder.build();//2.开启作业new SpringJobScheduler(instance,zookeeperRegistryCenter,liteJobConfiguration).init();}
}

d 创建作业任务的入口

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;/*** 动态添加任务*/
@RestController
public class Controller_1 {@Autowiredprivate DynamicTaskCreate dynamicTaskCreate;@RequestMapping("/addTask")public void addTask(SeckillActivity seckillActivity){//创建任务调度,活动结束的时候执行SimpleDateFormat simpleDateFormat = new SimpleDateFormat("ss mm HH dd MM ? yyyy");String cron = simpleDateFormat.format(seckillActivity.getEndTime());System.out.println("cron:"+cron);//cron="3/3 * * * * ? *";dynamicTaskCreate.create("renwu_"+seckillActivity.getId(),cron,1,new DynamicJob(),"xingming=zhangsan");}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/49576.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java异常有哪些

目录 内存溢出异常(OutOfMemoryError) IO异常(IOException) 文件找不到异常(FileNotFoundException) 类找不到异常(ClassNotFoundException) 类转换异常(ClassCastException) 没有这个方法异常(NoSuchMethodException) 索引越界异常(IndexOutOfBoundsException) SQL异常…

后端开发刷题 | 笔试

1.关于C的纯虚函数&#xff0c;下列说法错误的是&#xff08;&#xff09; A 纯虚函数不能实例化对象&#xff0c;拥有纯虚函数的类是抽象类 B 纯虚函数不能做指针和引用 C 纯虚函数声明的最后面“0”并不表示函数返回值为0&#xff0c;它只起形式上的作用 D 虚函数和纯虚函数都…

uniapp 重置表单数据

场景 例如有数据如下 data(){return {queryForm:{value1:undefined,}} } 点击重置时候想重置form的数据&#xff0c; 操作 Object.assign(this.$data.queryForm, this.$options.data().queryForm); 就可以重置数据

FlowUs横向对比几款笔记应用的优势所在

FlowUs作为一个本土化的生产力工具&#xff0c;在中国市场的环境下相对于Notion有其独特的优势&#xff0c;尤其是在稳定性和模板适应性方面。 尽管Notion在笔记和生产力工具领域享有极高的声誉&#xff0c;拥有着诸多创新功能和强大的生态系统&#xff0c;但它并不一定适合每…

VMware三种网络模式---巨细

文章目录 目录 ‘一.网络模式概述 二.桥接模式 二.NAT模式 三.仅主机模式 四.案例演示 防火墙配置&#xff1a; 虚拟电脑配置 前言 本文主要介绍VMware的三种网络模式 ‘一.网络模式概述 VMware中分为三种网络模式&#xff1a; 桥接模式&#xff1a;默认与宿主机VMnet0绑…

基于Java中的SSM框架实现商店积分管理系统项目【项目源码+论文说明】计算机毕业设计

基于Java中的SSM框架实现商店积分管理系统演示 摘要 随着时代的发展&#xff0c;信息化的管理手段已被普遍应用于企业的日常运作中。在当今竞争激烈的市场中&#xff0c;消费者的需求量日益增长&#xff0c;而商品信息的管理也变得越来越复杂&#xff0c;因此&#xff0c;实施…

9. 机器学习汇总(数据、模型、流程、心血管疾病预测)

1. 数据 表格类数据 tabular data互相独立&#xff0c;互不影响离散型数据的数字化&#xff1a; zero index&#xff08;状态很少时&#xff09; 0,1,2,…, N-1 one - hot&#xff08;状态比较多时&#xff09; 1个特征变N个特征[0, 0, 1, …, 0] 连续型数据的数字化问题&…

14. Hibernate 一对多双向关联映射

1. 前言 本节课程和大家一起聊聊一对多关联映射。通过本节课程&#xff0c;你将了解到&#xff1a; 如何实现一对多关联映射&#xff1b; 如何实现双向一对多关联映射&#xff1b; 关联映射中的级联操作。 2. 一对多关联映射 关系型数据库中表与表中的数据存在一对多&…

在Ubuntu 18.04上安装和使用Composer的方法

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 介绍 Composer 是一个流行的 PHP 依赖管理工具&#xff0c;主要用于简化项目依赖项的安装和更新。它会检查特定项目依赖的其他软件包&a…

深入理解Linux网络(八):内核如何发送网络包

深入理解Linux网络&#xff08;八&#xff09;&#xff1a;内核如何发送网络包 一、总览二、网卡启动准备三、ACCEPT 创建新 SOCKET四、开始发送数据send 系统调⽤实现传输层处理传输层拷贝传输层发送 网络层发送原理邻居⼦系统网络设备子系统软中断调度igb网卡驱动发送发送完成…

git revert 回退 中间的一笔提交

git revert abcdef git如何回退中间一次提交 • Worktile社区

Python 实现PDF和TIFF图像之间的相互转换

PDF是数据文档管理领域常用格式之一&#xff0c;主要用于存储和共享包含文本、图像、表格、链接等的复杂文档。而TIFF&#xff08;Tagged Image File Format&#xff09;常见于图像处理领域&#xff0c;主要用于高质量的图像文件存储。 在实际应用中&#xff0c;我们可能有时需…

wefwefwe

c语言中的小小白-CSDN博客c语言中的小小白关注算法,c,c语言,贪心算法,链表,mysql,动态规划,后端,线性回归,数据结构,排序算法领域.https://blog.csdn.net/bhbcdxb123?spm1001.2014.3001.5343 给大家分享一句我很喜欢我话&#xff1a; 知不足而奋进&#xff0c;望远山而前行&am…

在 ArkTS 中集成 C 语言模块来管理文件描述符

文章目录 前言ArkTS模块C语言模块C模块代码 总结 前言 在现代开发中&#xff0c;尤其是在处理文件操作时&#xff0c;使用文件描述符&#xff08;fd&#xff09;是一种常见的方法。ArkTS提供了一种强大的方式来与底层C代码交互&#xff0c;使我们能够利用C语言的性能优势来管理…

LeetCode-day24-2766. 重新放置石块

LeetCode-day24-2766. 重新放置石块 题目描述示例示例1&#xff1a;示例2&#xff1a; 思路代码 题目描述 给你一个下标从 0 开始的整数数组 nums &#xff0c;表示一些石块的初始位置。再给你两个长度 相等 下标从 0 开始的整数数组 moveFrom 和 moveTo 。 在 moveFrom.leng…

dsa加训

refs: OI Wiki - OI Wiki (oi-wiki.org) 1. 枚举 POJ 2811 熄灯问题 refs : OpenJudge - 2811:熄灯问题 如果要枚举每个灯开或者不开的情况&#xff0c;总计2^30种情况&#xff0c;显然T。 不过我们可以发现&#xff1a;若第i行的某个灯亮了&#xff0c;那么有且仅有第i行和第…

巧用 API 接口,尽览京东商品详情

在电商的浩瀚世界里&#xff0c;京东无疑是一座丰富的宝库&#xff0c;而京东商品详情则是其中的璀璨明珠。对于开发者、数据分析师和电商从业者来说&#xff0c;能够巧妙地运用 API 接口获取京东商品详情&#xff0c;无疑是打开了一扇洞察电商奥秘的窗户。 一、京东商品详情的…

【算法与数据结构】并查集

并查集 合并和查询集合的数据结构&#xff0c;经常用于连通图&#xff0c;最小生成树 K r u s k a l Kruskal Kruskal算法&#xff0c;最近公共祖先( L C A LCA LCA​​) 查询的时间复杂度&#xff1a;小于O( l o g 2 n log_{2}n log2​n)近乎O(1) 【模板】并查集 题目描述…

Win10使用VS Code远程连接Ubuntu服务器时遇到SSH公钥错误的解决方案

在使用Windows 10上的Visual Studio Code&#xff08;VS Code&#xff09;远程连接Ubuntu 20.04服务器时&#xff0c;遇到了以下错误&#xff1a; 错误的原因 这个错误消息表明&#xff0c;SSH 客户端检测到远程主机的 ECDSA 公钥已更改。可能是由于以下原因之一&#xff1a…

组蛋白乳酸化 | 调控蛋白Writers、Erasers和Readers

组蛋白修饰的调控可以被归类为三类蛋白&#xff1a;Writers&#xff08;写入者&#xff09;、Erasers&#xff08;擦除者&#xff09;和Readers&#xff08;读取者&#xff09;。Writers是负责在组蛋白上添加修饰基团的蛋白&#xff0c;包括乙酰化、甲基化等修饰。Erasers则是负…