Quartz定时任务Spring FrameWork整合

spring 版本是4.3.6

Quarz Job类使用spring bean


	<!-- ======================== 调度工厂 ======================== -->
	<bean id="schedulerFactoryBean" lazy-init="false" autowire="no"  class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
		<property name="dataSource" ref="dataSource"></property>
		<property name="configLocation" value="classpath:quartz.properties" />
		<!--spring上下文名称-->
		<property name="applicationContextSchedulerContextKey" value="applicationContext" />

	</bean>

然后取得时候代码,这样就能取到spring bean

public class Job extends QuartzJobBean {
   

    private static final Logger log = LoggerFactory.getLogger(OpenLiveJob.class);

    @Override
    protected void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException {
   

        //通过 jobExecutionContext 来获取对象
        String jobName = jobExecutionContext.getJobDetail().getKey().getName();
        String jobGroupName = jobExecutionContext.getJobDetail().getKey().getGroup();

        //获取上下文
        ApplicationContext applicationContext = null;
        try {
   
            applicationContext = (ApplicationContext) (jobExecutionContext.getScheduler().getContext().get("applicationContext"));
        } catch (SchedulerException e) {
   
            log.error("applicationContext is error = {}", e);
            throw new JobExecutionException("applicationContext get error");
        }
 }

Quartz配置 quartz.properties

#===========================================
#Configure Main Scheduler Properties        调度器属性
#===========================================
#集群中应用采用相同的Scheduler实例
org.quartz.scheduler.instanceName: DefaultQuartzScheduler
#集群节点的ID必须唯一,可由quartz自动生成
org.quartz.scheduler.instanceId: AUTO

#通知Scheduler实例要它参与到一个集群当中
org.quartz.jobStore.isClustered: true
#===========================================
#Configure ThreadPool           线程池属性
#处理Job的线程个数,至少为1,但最多的话最好不要超过100,在多数机器上设置该值超过100的话就会显得相当不适用,特别是在Job执行时间较长的情况下
org.quartz.threadPool.threadCount: 5
#线程的优先级,优先级别高的线程比级别低的线程优先得到执行。最小为1,最大为10,默认为5
org.quartz.threadPool.threadPriority: 5
#一个实现了 org.quartz.spi.ThreadPool 接口的类,Quartz 自带的线程池实现类是 org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.class=org.quartz.simpl.SimpleThreadPool


org.quartz.jobStore.misfireThreshold: 20000


#持久化
org.quartz.jobStore.class=org.quartz.impl.jdbcjobstore.JobStoreTX
##驱动代理为 标准的jdbc
org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.StdJDBCDelegate
#数据库表前缀
org.quartz.jobStore.tablePrefix=qrtz_

#系统关闭时插件
org.quartz.plugin.shutdownhook.class=org.quartz.plugins.management.ShutdownHookPlugin
org.quartz.plugin.shutdownhook.cleanShutdown = true
#配置自定义的插件日志逻辑
org.quartz.plugin.DBLoggingJobHistoryPlugin.class=com.suning.lv.serviceimpl.quartz.plugin.DBLoggingJobHistoryPlugin

对于quartz 运行过程中的时间记录,我这次使用的是quartz 自定义插件,给了很多事件回调的地方,可以记录到数据库汇总,参考下面这篇文章,获取springbean 方式和上面列的一致

自定义插件
Quartz的监听器(六)

相关推荐

  1. Quartz定时任务Spring FrameWork整合

    2024-02-03 09:54:01       33 阅读
  2. springboot集成Quartz定时任务组件

    2024-02-03 09:54:01       18 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-02-03 09:54:01       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-03 09:54:01       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-03 09:54:01       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-03 09:54:01       18 阅读

热门阅读

  1. 对ubuntu容器的一些初始化配置指令记录

    2024-02-03 09:54:01       26 阅读
  2. 【国产MCU】-CH32V307-通用DMA控制器及使用

    2024-02-03 09:54:01       31 阅读
  3. (五)ESP32基于MicroPython平台——IO口中断触发

    2024-02-03 09:54:01       32 阅读
  4. 货车运输(树)

    2024-02-03 09:54:01       27 阅读
  5. Linux网络编程-9.HTML,CSS基础

    2024-02-03 09:54:01       33 阅读
  6. 北向资金净买额

    2024-02-03 09:54:01       27 阅读
  7. Spring Boot解决跨域问题的3种方案

    2024-02-03 09:54:01       32 阅读
  8. 异步解耦之RabbitMQ(四)_消息持久化及ACK机制

    2024-02-03 09:54:01       33 阅读
  9. UnityShader(十三)Unity内置的函数

    2024-02-03 09:54:01       28 阅读
  10. TCP是怎么处理长连接、短连接

    2024-02-03 09:54:01       30 阅读