今天发现了一个 quartz 在 spring cloud 下的BUG
开始并没有 加入 spring cloud ,而是 spring boot 加上 quartz 而已。
这时候是可以执行的。
版本是 spring boot :
springBootVersion = '2.0.0.M4'
下面是 配置的quartz 代码。
package com.waylau.spring.cloud.weather.config;
import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.SimpleScheduleBuilder;
import org.quartz.Trigger;
import org.quartz.TriggerBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.waylau.spring.cloud.weather.job.WeatherDataSyncJob;
@Configuration
public class QuartzConfiguration {
private static final int TIME = 1800; // 更新频率
// JobDetail
@Bean
public JobDetail weatherDataSyncJobDetail() {
return JobBuilder.newJob(WeatherDataSyncJob.class).withIdentity("weatherDataSyncJob")
.storeDurably().build();
}
// Trigger
@Bean
public Trigger weatherDataSyncTrigger() {
SimpleScheduleBuilder schedBuilder = SimpleScheduleBuilder.simpleSchedule()
.withIntervalInSeconds(TIME).repeatForever();
//项目一启动完成就会执行
return TriggerBuilder.newTrigger().forJob(weatherDataSyncJobDetail())
.withIdentity("weatherDataSyncTrigger").withSchedule(schedBuilder).build();
}
}
其他配置就没有添加了,都是默认配置了
启动日志
2019-07-28 22:05:50.209 INFO 10176 --- [ main] org.quartz.impl.StdSchedulerFactory : Using default implementation for ThreadExecutor
2019-07-28 22:05:50.237 INFO 10176 --- [ main] org.quartz.core.SchedulerSignalerImpl : Initialized Scheduler Signaller of type: class org.quartz.core.SchedulerSignalerImpl
2019-07-28 22:05:50.237 INFO 10176 --- [ main] org.quartz.core.QuartzScheduler : Quartz Scheduler v.2.3.0 created.
2019-07-28 22:05:50.239 INFO 10176 --- [ main] org.quartz.simpl.RAMJobStore : RAMJobStore initialized.
2019-07-28 22:05:50.241 INFO 10176 --- [ main] org.quartz.core.QuartzScheduler : Scheduler meta-data: Quartz Scheduler (v2.3.0) 'quartzScheduler' with instanceId 'NON_CLUSTERED'
Scheduler class: 'org.quartz.core.QuartzScheduler' - running locally.
NOT STARTED.
Currently in standby mode.
Number of jobs executed: 0
Using thread pool 'org.quartz.simpl.SimpleThreadPool' - with 10 threads.
Using job-store 'org.quartz.simpl.RAMJobStore' - which does not support persistence. and is not clustered.
2019-07-28 22:05:50.241 INFO 10176 --- [ main] org.quartz.impl.StdSchedulerFactory : Quartz scheduler 'quartzScheduler' initialized from an externally provided properties instance.
2019-07-28 22:05:50.241 INFO 10176 --- [ main] org.quartz.impl.StdSchedulerFactory : Quartz scheduler version: 2.3.0
2019-07-28 22:05:50.242 INFO 10176 --- [ main] org.quartz.core.QuartzScheduler : JobFactory set to: org.springframework.boot.autoconfigure.quartz.AutowireCapableBeanJobFactory@57d0fc89
2019-07-28 22:05:50.441 INFO 10176 --- [ main] o.s.j.e.a.AnnotationMBeanExporter : Registering beans for JMX exposure on startup
2019-07-28 22:05:50.460 INFO 10176 --- [ main] o.s.c.support.DefaultLifecycleProcessor : Starting beans in phase 2147483647
2019-07-28 22:05:50.461 INFO 10176 --- [ main] o.s.s.quartz.SchedulerFactoryBean : Starting Quartz Scheduler now
2019-07-28 22:05:50.462 INFO 10176 --- [ main] org.quartz.core.QuartzScheduler : Scheduler quartzScheduler_$_NON_CLUSTERED started.
2019-07-28 22:05:50.491 INFO 10176 --- [eduler_Worker-1] c.w.s.c.weather.job.WeatherDataSyncJob : Weather Data Sync Job. Start!
2019-07-28 22:05:50.493 INFO 10176 --- [eduler_Worker-1] c.w.s.c.weather.job.WeatherDataSyncJob : Weather Data Sync Job, cityId:101280601
2019-07-28 22:05:50.618 INFO 10176 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 9090 (http)
2019-07-28 22:05:50.630 INFO 10176 --- [ main] c.w.spring.cloud.weather.Application : Started Application in 7.627 seconds (JVM running for 9.942)
已执行
2019-07-28 22:05:51.135 INFO 10176 --- [eduler_Worker-1] c.w.s.c.weather.job.WeatherDataSyncJob : Weather Data Sync Job. End!
看到执行的 打印 “已执行” 就是已经执行了。
但是 如果 加入 spring cloud 作为一个微服务
下面是启动类
**
* 即是生产者也是消费者(消费城市)
*/
@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
其他就没有什么改动了
下面是启动日志
2019-07-28 22:14:57.653 INFO 8824 --- [ main] org.quartz.impl.StdSchedulerFactory : Using default implementation for ThreadExecutor
2019-07-28 22:14:57.683 INFO 8824 --- [ main] org.quartz.core.SchedulerSignalerImpl : Initialized Scheduler Signaller of type: class org.quartz.core.SchedulerSignalerImpl
2019-07-28 22:14:57.683 INFO 8824 --- [ main] org.quartz.core.QuartzScheduler : Quartz Scheduler v.2.3.0 created.
2019-07-28 22:14:57.685 IN