Sfoglia il codice sorgente

scheduler可配置

zhouhao 8 anni fa
parent
commit
eafc89e45c

+ 12 - 3
hsweb-web-service/hsweb-web-service-simple/src/main/java/org/hsweb/web/service/impl/SchedulerAutoConfiguration.java

@@ -22,6 +22,9 @@ import org.quartz.impl.StdSchedulerFactory;
 import org.quartz.spi.JobFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
+import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
+import org.springframework.boot.autoconfigure.jdbc.DataSourceProperties;
+import org.springframework.boot.context.properties.EnableConfigurationProperties;
 import org.springframework.context.ApplicationContext;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
@@ -33,8 +36,12 @@ import javax.sql.DataSource;
 
 @Configuration
 @ConditionalOnClass(QuartzScheduler.class)
+@EnableConfigurationProperties(SchedulerProperties.class)
 public class SchedulerAutoConfiguration {
 
+    @Autowired
+    private SchedulerProperties schedulerProperties;
+
     @Autowired
     private ApplicationContext applicationContext;
 
@@ -55,13 +62,15 @@ public class SchedulerAutoConfiguration {
     public SchedulerFactoryBean schedulerFactory(JobFactory jobFactory) {
         SchedulerFactoryBean schedulerFactoryBean = new SchedulerFactoryBean();
         schedulerFactoryBean.setApplicationContext(applicationContext);
-        schedulerFactoryBean.setAutoStartup(true);
+        schedulerFactoryBean.setAutoStartup(schedulerProperties.isAutoStartup());
         schedulerFactoryBean.setDataSource(dataSource);
         schedulerFactoryBean.setTransactionManager(platformTransactionManager);
-        schedulerFactoryBean.setOverwriteExistingJobs(true);
+        schedulerFactoryBean.setOverwriteExistingJobs(schedulerProperties.isOverwriteExistingJobs());
         schedulerFactoryBean.setSchedulerFactoryClass(StdSchedulerFactory.class);
-        schedulerFactoryBean.setBeanName("scheduler");
+        schedulerFactoryBean.setBeanName(schedulerProperties.getBeanName());
         schedulerFactoryBean.setJobFactory(jobFactory);
+        schedulerFactoryBean.setWaitForJobsToCompleteOnShutdown(schedulerProperties.isWaitOnShutdown());
+        schedulerFactoryBean.setQuartzProperties(schedulerProperties.getProperties());
         return schedulerFactoryBean;
     }
 }

+ 74 - 0
hsweb-web-service/hsweb-web-service-simple/src/main/java/org/hsweb/web/service/impl/SchedulerProperties.java

@@ -0,0 +1,74 @@
+/*
+ * Copyright 2015-2016 http://hsweb.me
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.hsweb.web.service.impl;
+
+import org.springframework.boot.context.properties.ConfigurationProperties;
+
+import java.util.Properties;
+
+@ConfigurationProperties(prefix = "scheduler")
+public class SchedulerProperties {
+    private boolean autoStartup = true;
+
+    private boolean overwriteExistingJobs = true;
+
+    private String beanName = "scheduler";
+
+    private boolean waitOnShutdown = true;
+
+    private Properties properties;
+
+    public boolean isAutoStartup() {
+        return autoStartup;
+    }
+
+    public void setAutoStartup(boolean autoStartup) {
+        this.autoStartup = autoStartup;
+    }
+
+    public boolean isOverwriteExistingJobs() {
+        return overwriteExistingJobs;
+    }
+
+    public void setOverwriteExistingJobs(boolean overwriteExistingJobs) {
+        this.overwriteExistingJobs = overwriteExistingJobs;
+    }
+
+    public String getBeanName() {
+        return beanName;
+    }
+
+    public void setBeanName(String beanName) {
+        this.beanName = beanName;
+    }
+
+    public boolean isWaitOnShutdown() {
+        return waitOnShutdown;
+    }
+
+    public void setWaitOnShutdown(boolean waitOnShutdown) {
+        this.waitOnShutdown = waitOnShutdown;
+    }
+
+    public Properties getProperties() {
+        return properties;
+    }
+
+    public void setProperties(Properties properties) {
+        this.properties = properties;
+    }
+}

+ 3 - 0
hsweb-web-service/hsweb-web-service-simple/src/test/resources/application.yml

@@ -1,5 +1,8 @@
 logging:
     config: classpath:logback.xml
+scheduler:
+    properties:
+        org.quartz.jobStore.isClustered: true
 spring:
     aop:
         auto: true