zoukankan      html  css  js  c++  java
  • quartz定时任务存储

    今天不聊quartz的概念,像任务bean,触发器,调度器这些随随便便都可以百度到,其中任务bean要实现job接口。对于这些创建生成的定时任务,它可以保存在内存中,重启失效,也可以保存在数据库里重启服务器依然有效。

    其实quartz是可以有一个配置文件的,不管是与spring集成还是作为一个独立的程序,当然如果是简单的任务调度就用不到配置文件了,如果是复杂一点的比如要保存任务到数据库,那么就需要配置文件了。配置文件一般在类路径下,名称为: quartz.properties。如果是只是一个java程序那么没什么好讲的,所有的都可以在代码里实现,这里讲的都是和spring集成的情况。
    一、保存到内存
    在spring里需要配置任务bean, 触发器,调度器,默认即保存在内存中,可以在调度器里指定配置文件的名称。
    任务bean:
    <bean id="job_merge" class="com.yuanjiu.data.DataMerge" />
    触发器
    <bean id="cronTrigger_merge" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
    <property name="jobDetail" ref="job_Merge" />
    <property name="cronExpression" value="0 0 3 * * ?" />
    </bean>
    调度器
    <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
    <property name="triggers">
    <list>
    <ref bean="cronTrigger_merge" />
    </list>
    </property>
    </bean>
    二、保存到数据库
    配置调度器
    <bean id="schedulerFactoryBean" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
    <property name="dataSource" ref="dataSource"/>
    <property name="overwriteExistingJobs" value="true"/>
    <property name="configLocation" value="classpath:quartz.properties"/>
    </bean>
    配置文件解析:quartz.properties
    org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX, 这里指定保存到数据库,且所有的事务自己管理,如果要把事务交给容器管理,那么可以使用org.quartz.impl.jdbcjobstore.JobStoreCMT, 还有一个值为org.quartz.simpl.RAMJobStore指定保存到内存而不是数据库。

    org.quartz.jobStore.driverDelegateClass:指定数据库类型,一般为jdbc: org.quartz.impl.jdbcjobstore.StdJDBCDelegate
    org.quartz.jobStore.dataSource :指定数据源名称,这里的数据源必须是在quartz配置文件中定义的
    org.quartz.jobStore.tablePrefix :数据库表前缀
    org.quartz.jobStore.useProperties = true | false :指定所有存储在JobDataMaps中的值都是字符串, 这样数据库存储的就不再是二进制
    org.quartz.threadPool.threadCount = 3 : 线程数,最好与数据源定义的最大连接数相同

    数据库连接可以在spring配置文件中配置,也可以在quartz配置文件中定义,myDS名称可以任意取
    org.quartz.dataSource.myDS.driver = oracle.jdbc.driver.OracleDriver
    org.quartz.dataSource.myDS.URL = jdbc:oracle:thin:@10.0.1.23:1521:demodb
    org.quartz.dataSource.myDS.user = myUser
    org.quartz.dataSource.myDS.password = myPassword
    org.quartz.dataSource.myDS.maxConnections = 30
    定义好配置文件后quartz会在数据库里自动根据表前缀定义表并存储任务类与触发器这些,服务器重启后定时任务依然有效。其他具体的参数可以参照官网:http://www.quartz-scheduler.org/documentation/quartz-2.2.x/configuration/ConfigJobStoreTX.html

  • 相关阅读:
    android HashMap的几种遍历方法
    Android android:windowSoftInputMode属性详解
    Linux环境变量的设置和查看方法
    linux 定时执行shell脚本
    Linux 定时执行shell脚本_crontab
    Linux下修改字符集,转自
    解决Linux下Oracle中文乱码的一些心得体会 ,转自
    SSH Secure Shell Client连接Linux 命令行显示中文乱码问题 和oracle 查询数据中文乱码问题
    VMware 虚拟机(linux)增加根目录磁盘空间 转自
    linux 虚机增加硬盘大小 转自
  • 原文地址:https://www.cnblogs.com/helloz/p/8011818.html
Copyright © 2011-2022 走看看