您的位置 首页 > 德语词汇

quartz是什么意思?用法、例句 Quartz的使用

大家好,今天来为大家分享quartz是什么意思?用法、例句的一些知识点,和Quartz的使用的问题解析,大家要是都明白,那么可以忽略,如果不太清楚的话可以看看本篇文章,相信很大概率可以解决您的问题,接下来我们就一起来看看吧!

quartz是什么意思?用法、例句 Quartz的使用

1、是一个当今市面上流行的高效的任务调用管理工具

2、是java编写的,我们使用费时需要导入依赖即可

3、所谓任务调用,就是执行某些具体动作的时间计划

4、我们使用过的最简单的调度方法就是Timer

5、但是Timer的调度功能过于单一,只能是指定时间的延时调用和周期运行

6、而Quartz可以更详细的指定时间,进行计划调用

7、调度器来配置\\计划什么时间触发什么任务

8、简单来说就是调度器规定什么时间做什么事情

9、-job(工作\\任务):Quartz实现过程中是一个接口,接口中有一个方法execute(执行的意思)

10、我们创建一个类,实现这个接口,在方法中编写要进行的操作(执行具体任务)

11、?我们还需要一个JobDetail的类型的对象,Quartz每次执行job时

12、?会实例化job类型对象,去调用这个方法,JobDetail是用来描述Job实现类

13、?的静态信息,比如任务运行时在Quartz中的名称

14、-Trigger(触发器):能够描述触发指定job的规则,分为简单触发和复杂触发

15、简单触发可以使用SimplTrigger实现类.功能类似timer

16、复杂触发可以使用CronTrigger实现类,内部利用cron表达式描述各种复杂的时间调度计划

17、-Scheduler(调度器):一个可以规定哪个触发器绑定哪个job的容器

18、在调度器中保存全部的Quartz保存的任务

19、SpringBoot框架下,添加Quartz依赖后,调度器由SpringBoot管理,我们不需要编写

20、-\\*表示任何值,如果在分的字段上编写*,表示每分钟都会触发

21、-,是个分割符如果秒字段我想20秒和40秒时触发两次就写20,40

22、-\\-表示一个区间秒字段5-10表示5,6,7,8,9,10

23、-/表示递增触发秒字段5/10表示5秒开始每隔10秒触发一次

24、日字段编写1/3表示从每月1日起每隔3天触发一次

25、-?表示不确定值,因为我们在定日期时,一般确定日期就不确定是周几,相反确定周几时就不确定日期

26、-L表示last最后的意思,我们可以设置当月的最后一天,就会在日字段用L表示,

27、周字段使用L表示最后一周,一般会和1-7的数字组合

28、-W表示最近的工作日(单纯的周一到周五)如果日字段编写15W表示

29、每月15日最近的工作日触发,如果15日是周六就14日触发,如果15日是周日就16日触发

30、?LW通常一起使用,表示本月的最后一个工作日

31、-\\#表示第几个,只能使用在周字段上6#3表示每月的第三个周五

32、如果#后面数字写大了,是一个不存在的日期,那就不运行了

33、适合设计在母亲节或父亲节这样的日期运行

34、每个月10日最近的工作日早上9点发工资

35、网络上可用的Cron表达式生成器很多

36、推荐一个http://cron.ciding.cc/

37、SpringBoot框架下使用Quartz格式还是非常固定的

38、我们选用之前学习微服务的项目csmall减少对大项目的影响

39、我们选项csmall-stock-webapi模块pom文件

40、<!--SpringBootQuartz依赖-->\n<dependency>\n<groupId>org.springframework.boot</groupId>\n<artifactId>spring-boot-starter-quartz</artifactId>\n</dependency>

先编写要执行的任务

41、包中创建一个QuartzJob的类,实现Job接口

42、publicclassQuartzJobimplementsJob{\n@Override\npublicvoidexecute(JobExecutionContextjobExecutionContext)throwsJobExecutionException{\n//输出当前时间\nSystem.out.println("--------------"+LocalDateTime.now()+"---------------");\n}\n}

在quartz包下,继续创建一个类QuartzConfig

43、这个类是一个SpringBoot配置类,它实际上是Quartz调度器的配置

44、代码的编写基本格式个固定的,需要使用时直接套用这个格式

45、//这个配置类就是在配置已经保存在Spring容器中的调度器Scheduler\n//我们需要按下面格式进行配置,才能让Scheduler正常工作\n@Configuration\npublicclassQuartzConfig{\n//创建一个JobDetail(工作详情)类对象,保存到Spring容器中,这个类用于封装我们编写的job接口实现类\n//@Bean注解标记的方法的返回值会自动保存到Spring容器中(方法名随意)\n@Bean\npublicJobDetailshowTime(){\nSystem.out.println("showTime方法运行");\nreturnJobBuilder.newJob(QuartzJob.class)//绑定要运行的任务类的反射\n.withIdentity("date")//设置这个job的名称\n.storeDurably()//\n.build();\n}\n\n//下面要声明触发器,Trigger,触发器决定我们的工作\\任务何时触发\n@Bean\npublicTriggershowTimeTrigger(){\nSystem.out.println("showTime触发器运行");\n//定义Cron表达式每分钟触发一次的定义\nCronScheduleBuildercronScheduleBuilder=\nCronScheduleBuilder.cronSchedule("00/1***?");\nreturnTriggerBuilder.newTrigger()\n.forJob(showTime())//绑定JobDetailJobDetail对象已经在Spring容器中\n.withIdentity("dateTrigger")//定义触发器名称\n.withSchedule(cronScheduleBuilder)//绑定Cron表达式\n.build();\n}\n}

Nacos\\Seata需要启动

46、每隔2分钟运行一次添加库存的操作,PC100号商品的库存添加10

47、//从Spring容器中获得业务逻辑层对象,然后PC100商品新增库存数10\npublicclassStockJobimplementsJob{\n@Autowired\nprivateIStockServicestockService;\n@Override\npublicvoidexecute(JobExecutionContextjobExecutionContext)throwsJobExecutionException{\nStockReduceCountDTOstockReduceCountDTO=newStockReduceCountDTO();\nstockReduceCountDTO.setCommodityCode("PC100");\n//业务本身是减少库存,我们赋值减少库存数为-10,就是增加库存数10\nstockReduceCountDTO.setReduceCount(-10);\nstockService.reduceCommodityCount(stockReduceCountDTO);\n}\n}

可以继续在QuartzConfig类中配置JobDetail和Trigger

48、@Bean\npublicJobDetailaddStock(){\nreturnJobBuilder.newJob(StockJob.class)\n.withIdentity("addStock")\n.storeDurably()\n.build();\n}\n\n@Bean\npublicTriggeraddStockTrigger(){\nCronScheduleBuildercronScheduleBuilder=\nCronScheduleBuilder.cronSchedule("00/2***?");\nreturnTriggerBuilder.newTrigger()\n.forJob(addStock())\n.withIdentity("addStockTrigger")\n.withSchedule(cronScheduleBuilder)\n.build();\n}

学习记录,如有侵权请联系删除

END,本文到此结束,如果可以帮助到大家,还望关注本站哦!

本站涵盖的内容、图片、视频等数据,部分未能与原作者取得联系。若涉及版权问题,请及时通知我们并提供相关证明材料,我们将及时予以删除!谢谢大家的理解与支持!

Copyright © 2023