zoukankan      html  css  js  c++  java
  • Quartz应用实践入门案例一(基于Web环境)

      Quartz是一个完全由java编写的开源作业调度框架,正是因为这个框架整合了许多额外的功能,所以在使用上就显得相当容易。只是需要简单的配置一下就能轻松的使用任务调度了。在Quartz中,真正执行的java代码逻辑部分就是实现org.quartz.Job接口中的execute方法。简而言之,如果需要Quartz框架,只需要实现接口方法就行。关于究竟什么是Quartz,贴出官方解释:

            

      本文不介绍Quartz的工作原理和实现过程分析,如果想深入学习Quartz,为您提供链接http://www.quartz-scheduler.org,文本的重点是强调如何快速应用定时任务到自己的程序中,能够在短时间掌握和配置Quartz。为刚接触Quartz不知从何下手的朋友提供一个案例,希望能起到抛砖引玉的作用。还有一篇关于Quartz的博客是基于java工程的应用案例将在稍后贴上《Quartz应用实践入门案例二(基于java工程)》

      本文作者itred      邮箱:it_red@sina.com      博客链接:http://www.cnblogs.com/itred

          本文版权归作者和博客园共有,欢迎转载,请在文章显眼位置标明文章出处。未经本人书面同意,摞为他用,本人保留追究的所有权利。

        好了,废话不多说。案例走起!

      1.  新建一个web工程,quartzDemo;

      2.  添加所需要的jar包:

                

      3.  在src目录下新建一个job包,用于存放java代码;

      4.  在src目录下新建一个properties文件和xml文件:

     1 #============================================================================
     2 # Configure Main Scheduler Properties  
     3 #============================================================================
     4 org.quartz.scheduler.instanceName = QuartzScheduler
     5 org.quartz.scheduler.instanceId = AUTO
     6 #============================================================================
     7 # Configure ThreadPool  
     8 #============================================================================
     9 org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
    10 org.quartz.threadPool.threadCount = 5
    11 org.quartz.threadPool.threadPriority = 5
    12 #============================================================================
    13 # Configure JobStore  
    14 #============================================================================
    15 org.quartz.jobStore.misfireThreshold = 60000
    16 org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore
    17 #============================================================================
    18 # Configure Plugins 
    19 #============================================================================
    20 #org.quartz.plugin.triggHistory.class = org.quartz.plugins.history.LoggingJobHistoryPlugin
    21 org.quartz.plugin.jobInitializer.class = org.quartz.plugins.xml.XMLSchedulingDataProcessorPlugin
    22 org.quartz.plugin.jobInitializer.fileNames = quartz_data.xml
    23 org.quartz.plugin.jobInitializer.failOnFileNotFound = true
    24 org.quartz.plugin.jobInitializer.scanInterval = 10
    25 org.quartz.plugin.jobInitializer.wrapInUserTransaction =false
    26 
    27 #默认会联网检查是否有更新,还是skip为好
    28 org.quartz.scheduler.skipUpdateCheck =true  

      5.  在此基础上,开始配置web.xml文件:

        我们需要设置并实现当web工程一旦开始启动运行,这个定时任务就开始自动执行。所以需要在xml中添加上<load-on-startup>2</load-on-startup>;而且还需要初始化参数:因此,web.xml中应该添加的内容如下:

      <servlet>
            <servlet-name>QuartzInitializer</servlet-name>
            <servlet-class>
                org.quartz.ee.servlet.QuartzInitializerServlet
            </servlet-class>
            <init-param>
                <param-name>config-file</param-name>
                <param-value>/quartz.properties</param-value>
            </init-param>
            <init-param>
                <param-name>shutdown-on-unload</param-name>
                <param-value>true</param-value>
            </init-param>
            <load-on-startup>2</load-on-startup>
        </servlet>

      6.  配置quartz_data.xml文件:

    <?xml version="1.0" encoding="UTF-8"?>
    <job-scheduling-data
        xmlns="http://www.quartz-scheduler.org/xml/JobSchedulingData"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.quartz-scheduler.org/xml/JobSchedulingData http://www.quartz-scheduler.org/xml/job_scheduling_data_1_8.xsd"
        version="1.8">
        <schedule>
            <job>
                <name>DemoJob</name>
                <group>JobGroup</group>
                <job-class>job.QuartzDemoJob</job-class>
            </job>
            <trigger>
                <cron>
                    <name>DemoTrigger</name>
                    <group>triggerGroup</group>
                    <job-name>DemoJob</job-name>
                    <job-group>JobGroup</job-group>
                    <cron-expression>0/3 * * * * ?</cron-expression>
                </cron>
            </trigger>
        </schedule>
        <schedule>
            <job>
                <name>TestJob</name>
                <group>TestGroup</group>
                <job-class>job.QuartzTestJob</job-class>
            </job>
            <trigger>
                <cron>
                    <name>DemoTrigger</name>
    <!--                <group>triggerGroup</group>-->
                    <job-name>TestJob</job-name>
                    <job-group>TestGroup</job-group>
                    <cron-expression>0/5 * * * * ?</cron-expression>
                </cron>
            </trigger>
        </schedule>
    </job-scheduling-data>

        quartz_data.xml文件是在properties文件中进行了设置的。即:org.quartz.plugin.jobInitializer.fileNames = quartz_data.xml

        这个配置可以在以后的实际应用中慢慢学习。

      7.  实现job接口:

        如果你是细心的读者,你就会发现本文配置的是两个不同的定时任务。分别是每隔3秒执行一次和每隔5秒执行一次。这样看来,Quartz的强大就可以不言而喻了。

        定时任务1:

            

        定时任务2:

            

      8.  最后,部署这个web工程,启动Tomcat。你就会看到你希望看到的了。

          

        关于本文介绍Quartz的案例,欢迎大神拍砖指教。如果各位菜鸟朋友不理解,欢迎来邮,希望与你共同研究,讨论!

          源码下载

      作者:itRed    邮箱it_red@sina.com
      博客链接:http://www.cnblogs.com/itred
      版权声明:本文版权归作者和博客园共有,欢迎转载,但请在文章显眼位置标明文章出处。未经本人书面同意,将其作为他用,本人保留追究责任的所有权利。
     
  • 相关阅读:
    swagger 兼容 docker 转发 配置
    rust 条件编译 Debug Release
    rust-must-know-crates-5ad8 100DayOfRust
    python C# DES 加密转换
    The Little Book of Rust Books
    swiper 禁止滑动
    uniapp自定义凸出的导航栏
    uniapp css实现双排菜单向左滑动
    uniapp开发公众号,微信设置字体大小后,禁止改变页面字体大小
    uniapp接口封装
  • 原文地址:https://www.cnblogs.com/itred/p/4115047.html
Copyright © 2011-2022 走看看