一、StringRedisTemplate用法
二、ValueOperations用法
三、SimpleScheduleBuilder用法
-
首先设定一个定时器
在quartzJob()
方法中,对任务进行派遣,
newJob()
:通过静态方法创建一个对象实例,或并且制定他的jobType 类型;
SyncDoJobServiceImpl.class
:指的是一个执行定时任务的类;
withIdentity()
:就是指定job的名字(一般是SyncDoJobServiceImpl
类名),这里名字类型为JobKey。如果没有指定名字,则在Builder的时候制定一个GUID;
storeDurably()
:Job持久化 ,默认情况下 job没有trigger的时候会被删除,设置为true则不会删除,默认值是true
;
然后创建build()
。在
quartzTrigger()
方法中,指定调度的间隔和重复的次数;
withIntervalInMilliseconds()
:指定间隔( 毫秒);
withIntervalInSeconds()
:指定间隔( 秒);
withIntervalInMinutes()
:指定间隔(分);
withIntervalInHours()
:指定间隔(小时);
repeatForever()
:永远重复;
withRepeatCount()
:重复多少次;newTrigger()
:new一个trigger对象;
forJob()
:执行任务派遣quartzJob()
;
withIdentity()
:指定一个TriggerKey(trigger名字);
withSchedule()
: 设置ScheduleBuilder将用于定义触发器的时间表的。@Slf4j @Configuration public class QuartzConfig { /** * 任务派遣 */ @Bean public JobDetail quartzJob(){ return JobBuilder.newJob(SyncDoJobServiceImpl.class).withIdentity("SyncDoJobServiceImpl").storeDurably().build(); } /** * 触发器 * @return */ @Bean public Trigger quartzTrigger(){ SimpleScheduleBuilder simpleScheduleBuilder = SimpleScheduleBuilder.simpleSchedule().withIntervalInMinutes(2) .repeatForever(); log.info("触发了触发器"); return TriggerBuilder.newTrigger().forJob(quartzJob()).withIdentity("weatherQuartzTrigger") .withSchedule(simpleScheduleBuilder).build(); } }
-
具体的定时任务
这里使用了一个例子,通过json数据转为实体类,来获取城市的信息。(可以自定义一个任务)@Slf4j public class SyncDoJobServiceImpl extends QuartzJobBean { @Autowired private WeatherService weatherService; @Override protected void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException { //遍历出 5个城市的,得到单个的城市对象,然后调用 WeatherService 接口 log.info("开始 执行任务"); List<CityObj> cityObjs = null; try { cityObjs = JsonToCityUtil.getInstance().readJson(); } catch (Exception e) { e.printStackTrace(); } //遍历城市对象 for(CityObj city : cityObjs){ try { //10秒遍历一个城市 Thread.sleep(10000); //得到单个城市的名字 log.info("遍历的城市名字是:" + city.getCity_name()+ "----------"); log.info("时间过了10秒"); weatherService.setWeatherInfoToRedis(city.getCity_code()); } catch (InterruptedException e) { e.printStackTrace(); log.info("定时任务出现异常!"); } } } }