当前位置: 首页 > news >正文

建设部执业资格注册中心网站查询小程序公司十大排名

建设部执业资格注册中心网站查询,小程序公司十大排名,稳定的网站制作需要多少钱,国外超酷设计网站文章目录 前言一、quartz是什么#xff1f;二、quartz中核心概念三、集成步骤1.引入依赖2.demo样例a.定义一个任务参数实体类b.定义操作触发器、定时任务接口及实现c.作业实现d.结果截图 四、其他1.QuartzJobBean和Job区别2.注意事项3.作业#xff08;Job#xff09;和触发器… 文章目录 前言一、quartz是什么二、quartz中核心概念三、集成步骤1.引入依赖2.demo样例a.定义一个任务参数实体类b.定义操作触发器、定时任务接口及实现c.作业实现d.结果截图 四、其他1.QuartzJobBean和Job区别2.注意事项3.作业Job和触发器Trigger参数解析a.JobDetail 参数解析a.Trigger 参数解析 前言 项目中可能会遇到一些需要定时同步数据的业务场景比如从多个数据库汇总数据形成结果可以使用数据自带的定时任务去执行存储过程实现也可以通过集成quartz来实现 一、quartz是什么 1、Quartz是一个功能强大且灵活的开源任务调度库用于在Java应用程序中实现定时任务和作业调度。它允许你根据特定的时间表比如每天凌晨执行一次或者每隔一段时间执行一次来调度任务的执行。Quartz提供了丰富的功能包括支持CRON表达式、作业持久化、集群环境下的分布式调度、监听器支持等。 2、通过Quartz可以创建各种类型的作业例如简单作业只需要执行一次、重复作业按照指定的时间间隔重复执行、以及基于CRON表达式的作业按照指定的时间规则执行。 二、quartz中核心概念 1、任务 Job Job 就是你想要实现的任务类每一个 Job 必须实现org.quartz.job 接口且只需实现接口定义的execute() 方法。 2、触发器 Trigger Trigger 为你执行任务的触发器Trigger将会设置3点执行该任务。 Trigger主要包含两种 SimplerTrigger 和 CronTrigger 两种。 3、调度器 Scheduler Scheduler 为任务的调度器它会将任务 Job 及触发器 Trigger 整合起来负责基于Trigger 设定的时间来执行 Job。 三、集成步骤 1.引入依赖 dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-quartz/artifactIdversion2.6.13/version/dependency2.demo样例 a.定义一个任务参数实体类 Data public class QuartzJobInfo {private String type;private MapString, Object params;private String jobName;private String cronj;private String orderId; }b.定义操作触发器、定时任务接口及实现 接口类 public interface IQuartzService {//1.添加定时任务void addTrigger(QuartzJobInfo jobInfo);//2.移除定时任务idvoid delTrigger(Long id);}接口实现类 Service public class QuartzServiceImpl implements IQuartzService {Autowiredprivate SchedulerFactoryBean factoryBean;Overridepublic void addTrigger(QuartzJobInfo jobInfo) {//jobInfo转换为jsonString info JSONObject.toJSONString(jobInfo);//获取调度器Scheduler scheduler factoryBean.getScheduler();//调用 工具类设置定时任务QuartzUtils.addJob(scheduler, jobInfo.getJobName(), OrderJob.class, info, jobInfo.getCronj());}Overridepublic void delTrigger(Long id) {//获取Job的名字String jobName product_job id;//获取调度器Scheduler scheduler factoryBean.getScheduler();QuartzUtils.removeJob(scheduler, jobName);}}工具类 /*** Quartz调度管理器*/ public class QuartzUtils {private static String JOB_GROUP_NAME JOB_GROUP_SYSTEM;private static String TRIGGER_GROUP_NAME TRIGGER_GROUP_SYSTEM;/*** param sched 调度器* param jobName 任务名* param cls 任务* param params 任务参数* param time 时间设置参考quartz说明文档* Description: 添加一个定时任务使用默认的任务组名触发器名触发器组名* Title: QuartzManager.java*/public static void addJob(Scheduler sched, String jobName, SuppressWarnings(rawtypes) Class cls, Object params,String time) {try {JobKey jobKey new JobKey(jobName, JOB_GROUP_NAME);// 任务名任务组任务执行类SuppressWarnings(unchecked)JobDataMap jobDataMap new JobDataMap();jobDataMap.put(params, params);JobDetail jobDetail newJob(cls).withIdentity(jobKey).setJobData(jobDataMap).build();TriggerKey triggerKey new TriggerKey(jobName, TRIGGER_GROUP_NAME);// 触发器System.out.println(time);Trigger trigger newTrigger().withIdentity(triggerKey).withSchedule(cronSchedule(time)).build();// 触发器时间设定sched.scheduleJob(jobDetail, trigger);if (!sched.isShutdown()) {sched.start();// 启动}} catch (Exception e) {throw new RuntimeException(e);}}/*** param sched 调度器* param jobName 任务名* param jobGroupName 任务组名* param triggerName 触发器名* param triggerGroupName 触发器组名* param jobClass 任务* param params 任务参数* param time 时间设置参考quartz说明文档* Description: 添加一个定时任务* Title: QuartzManager.java*/public static void addJob(Scheduler sched, String jobName, String jobGroupName, String triggerName,String triggerGroupName, SuppressWarnings(rawtypes) Class jobClass, Object params, String time) {try {JobKey jobKey new JobKey(jobName, jobGroupName);JobDataMap jobDataMap new JobDataMap();jobDataMap.put(params, params);SuppressWarnings(unchecked)JobDetail jobDetail newJob(jobClass).withIdentity(jobKey).setJobData(jobDataMap).build();// 触发器TriggerKey triggerKey new TriggerKey(triggerName, triggerGroupName);Trigger trigger newTrigger().withIdentity(triggerKey).withSchedule(cronSchedule(time)).build();sched.scheduleJob(jobDetail, trigger);} catch (Exception e) {throw new RuntimeException(e);}}/*** param sched 调度器* param jobName* param time* Description: 修改一个任务的触发时间(使用默认的任务组名 触发器名 触发器组名)* Title: QuartzManager.java*/SuppressWarnings(rawtypes)public static void modifyJobTime(Scheduler sched, String jobName, String time) {try {TriggerKey triggerKey new TriggerKey(jobName, TRIGGER_GROUP_NAME);CronTrigger trigger (CronTrigger) sched.getTrigger(triggerKey);if (trigger null) {return;}String oldTime trigger.getCronExpression();if (!oldTime.equalsIgnoreCase(time)) {JobKey jobKey new JobKey(jobName, JOB_GROUP_NAME);JobDetail jobDetail sched.getJobDetail(jobKey);Class objJobClass jobDetail.getJobClass();Object params jobDetail.getJobDataMap().get(params);removeJob(sched, jobName);System.out.println(修改任务 jobName);addJob(sched, jobName, objJobClass, params, time);}} catch (Exception e) {throw new RuntimeException(e);}}/*** param sched 调度器 ** param sched 调度器* param triggerName* param triggerGroupName* param time* Description: 修改一个任务的触发时间* Title: QuartzManager.java*/public static void modifyJobTime(Scheduler sched, String triggerName, String triggerGroupName, String time) {try {TriggerKey triggerKey new TriggerKey(triggerName, triggerGroupName);CronTrigger trigger (CronTrigger) sched.getTrigger(triggerKey);if (trigger null) {return;}String oldTime trigger.getCronExpression();if (!oldTime.equalsIgnoreCase(time)) {// 修改时间trigger.getTriggerBuilder().withSchedule(cronSchedule(time));// 重启触发器sched.resumeTrigger(triggerKey);}} catch (Exception e) {throw new RuntimeException(e);}}/*** param sched 调度器* param jobName* Description: 移除一个任务(使用默认的任务组名 触发器名 触发器组名)* Title: QuartzManager.java*/public static void removeJob(Scheduler sched, String jobName) {try {TriggerKey triggerKey new TriggerKey(jobName, TRIGGER_GROUP_NAME);sched.pauseTrigger(triggerKey);// 停止触发器sched.unscheduleJob(triggerKey);// 移除触发器JobKey jobKey new JobKey(jobName, JOB_GROUP_NAME);sched.deleteJob(jobKey);// 删除任务} catch (Exception e) {throw new RuntimeException(e);}}/*** param sched 调度器* param jobName* param jobGroupName* param triggerName* param triggerGroupName* Description: 移除一个任务* Title: QuartzManager.java*/public static void removeJob(Scheduler sched, String jobName, String jobGroupName, String triggerName,String triggerGroupName) {try {TriggerKey triggerKey new TriggerKey(triggerName, triggerGroupName);sched.pauseTrigger(triggerKey);// 停止触发器sched.unscheduleJob(triggerKey);// 移除触发器JobKey jobKey new JobKey(jobName, jobGroupName);sched.deleteJob(jobKey);// 删除任务} catch (Exception e) {throw new RuntimeException(e);}}/*** param sched 调度器* Description:启动所有定时任务* Title: QuartzManager.java*/public static void startJobs(Scheduler sched) {try {sched.start();} catch (Exception e) {throw new RuntimeException(e);}}/*** param sched 调度器* Description:关闭所有定时任务*/public static void shutdownJobs(Scheduler sched) {try {if (!sched.isShutdown()) {sched.shutdown();}} catch (Exception e) {throw new RuntimeException(e);}} }c.作业实现 新增作业时需要继承QuartzJobBean类实现executeInternal方法。 Component public class OrderJob extends QuartzJobBean implements CommandLineRunner {AutowiredIQuartzService iQuartzService;//遵循规范Overridepublic void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException {String params (String) jobExecutionContext.getJobDetail().getJobDataMap().get(params);QuartzJobInfo info JSONObject.parseObject(params, QuartzJobInfo.class);String type info.getType();Date now new Date();switch (type) {case JobTypeConsts.WAIT_PRODUCT_ORDER_PAY_CANCEL_JOB://执行逻辑1System.out.println(-----------执行逻辑1,订单ID info.getOrderId());break;case JobTypeConsts.WAIT_USERDEPOSIT_ORDER_PAY_CANCEL_JOB://执行逻辑2System.out.println(-----------执行逻辑2,订单ID info.getOrderId());break;case JobTypeConsts.WAIT_REFUNDUSERDEPOSIT_ORDER_PAY_CANCEL_JOB://执行逻辑3System.out.println(-----------执行逻辑3,订单ID info.getOrderId());break;}}Overridepublic void run(String... args) throws Exception {for (int i 1; i 4; i) {QuartzJobInfo quartzJobInfo new QuartzJobInfo();quartzJobInfo.setJobName(测试定时任务---. i);quartzJobInfo.setCronj(0 0/1 * * * ?);quartzJobInfo.setType(String.valueOf(i));quartzJobInfo.setOrderId(String.valueOf(i));iQuartzService.addTrigger(quartzJobInfo);}} }实现CommandLineRunner接口的作用是当项目启动时会扫描到此接口执行实现接口中的逻辑执行完run方法然后根据Quartz 的调度触发机制在适当的时间执行 execute 方法。 d.结果截图 0 0/1 * * * ?代表每分钟执行一次 四、其他 1.QuartzJobBean和Job区别 继承关系QuartzJobBean 是一个 Spring 定制的 Quartz 作业类是 Quartz 提供的 Job 接口的一个实现类。因此QuartzJobBean 继承自 Spring 的 QuartzJobBean 类和实现了 Quartz 的 Job 接口。 扩展性通过继承 QuartzJobBean 类您可以利用 Spring 框架提供的依赖注入和生命周期管理等功能更容易地将 Quartz 作业集成到 Spring 应用中。而直接实现 Quartz 的 Job 接口则是一种更传统的方式不具备 Spring 相关的特性。 依赖注入使用 QuartzJobBean 可以方便地利用 Spring 的依赖注入机制从 Spring 容器中获取其他 Bean并在作业中使用这些 Bean例如使用使用Autowired方式。而直接实现 Job 接口时无法直接获得 Spring 托管的 Bean需要手动从 Spring 上下文中获取。 配置方式QuartzJobBean 更适合在 Spring 应用中使用可以通过 Spring 的配置文件或注解的方式来配置和管理定时任务。而直接实现 Job 接口通常需要通过 Quartz 的配置文件或 API 来进行配置。 2.注意事项 调度作业在在继承QuartzJobBean类后需要加Component注解确保Spring Boot 应用程序能正确扫描到。 3.作业Job和触发器Trigger参数解析 a.JobDetail 参数解析 Job Class作业类指定实现了Job接口的类该类定义了要执行的作业逻辑。Job Name作业名称作业的名称用于在调度器中标识该作业。Job Group作业组作业所属的分组用于对作业进行分类管理。Job Data Map作业数据可以传递一些作业执行时需要的数据以键值对的形式存储在JobDataMap中。 例 JobDetail jobDetail newJob(cls).withIdentity(jobKey).setJobData(jobDataMap).build();a.Trigger 参数解析 Trigger Name触发器名称触发器的名称用于在调度器中标识该触发器。Trigger Group触发器组触发器所属的分组用于对触发器进行分类管理。Trigger Start Time触发器开始时间指定触发器首次触发的时间点。Trigger End Time触发器结束时间可选参数指定触发器的结束时间超过该时间后触发器不再生效。Repeat Interval重复间隔时间指定触发器重复执行的间隔时间。 例: //创建触发器的唯一标识 TriggerKey 对象TriggerKey triggerKey new TriggerKey(jobName, TRIGGER_GROUP_NAME); //withSchedule() 方法用于设置触发器的调度规则 //cronSchedule(time) 表示使用 CRON 表达式来指定触发规则 //time 是一个表示 CRON 表达式的字符串用于定义触发器的执行时间规则 Trigger trigger newTrigger().withIdentity(triggerKey).withSchedule(cronSchedule(time)).build();
http://www.pierceye.com/news/176747/

相关文章:

  • 景区网站建设的意义女生学计算机应用技术可以做什么
  • 做律师网站的公司天津公司网站制作
  • 上海建设摩托车官方网站招聘网站数建设
  • 自己制作一个网站需要什么软件安吉网站制作
  • 如何设计服装网站首页网站建设比较好的公司
  • 微信网站的链接标志图片如何做公众号如何创建
  • 建站公司建的网站能改动吗怎样设置默认网站
  • 高并发电商网站开发辽宁省朝阳市做网站
  • 公司做网站有用吗合肥企业快速建站
  • 因脉网站建设公司怎么呀韩国网站开发建设技术特点
  • 网站备案 个人 单位安徽网站建设推广
  • 黔江网站制作网站招标建设
  • 网站注册公司目前最好的引流方法
  • 小米wifi设置网址入口网站通信工程建设网站
  • 深圳专业网站建在线做插画的网站
  • 站长之家网站查询怎么样创建自己的小程序
  • 站酷海报设计图片网站备份怎么做
  • 做网站挣钱么云市场 wordpress
  • 网站域名管理规范seo专员是什么
  • 网站制作+资讯网站特色栏目重要性
  • 网站qq 微信分享怎么做的随州市住房和城乡建设部网站
  • 资源网站建设多少钱手机网站页面文字做多大
  • 烟台专业做网站宜昌教育云网站建设
  • 慕课联盟网站开发实战wordpress怎样修改域名
  • 什么电脑做网站前段用旅游网站建设的利益
  • 做 暧视频在线观看网站花都网站建设设计
  • 黄石企业网站设计服务外包有哪些
  • 团队合作网站网站制作的报价大约是多少
  • 网站在线留言系统能挣钱的平台 正规的
  • 冀州网站制作泉州握旗公司网站建设