quart 简单应用

pom.xml<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>cn.byref</groupId>
    <artifactId>web-quartz</artifactId>
    <packaging>war</packaging>
    <version>0.0.1-SNAPSHOT</version>
    <name>web-quartz Maven Webapp</name>
    <url>http://maven.apache.org</url>
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
        </dependency>
        <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.0.1</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.quartz-scheduler/quartz -->
        <dependency>
            <groupId>org.quartz-scheduler</groupId>
            <artifactId>quartz</artifactId>
            <version>2.2.1</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/log4j/log4j -->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-log4j12 -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.7.12</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.quartz-scheduler/quartz-jobs -->
        <dependency>
            <groupId>org.quartz-scheduler</groupId>
            <artifactId>quartz-jobs</artifactId>
            <version>2.2.1</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/javax.transaction/jta -->
        <dependency>
            <groupId>javax.transaction</groupId>
            <artifactId>jta</artifactId>
            <version>1.1</version>
        </dependency>

    </dependencies>
    <build>
        <finalName>web-quartz</finalName>
    </build>
</project>

quartz.properties

#============================================================================
# Configure Main Scheduler Properties
#============================================================================

org.quartz.scheduler.instanceName = QuartzScheduler
org.quartz.scheduler.instanceId = AUTO

#============================================================================
# Configure ThreadPool
#============================================================================
org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount = 3
org.quartz.threadPool.threadPriority = 5

#============================================================================
# Configure JobStore
#============================================================================
org.quartz.jobStore.misfireThreshold = 60000
org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore

#============================================================================
# Configure Plugins
#============================================================================
org.quartz.plugin.triggHistory.class = org.quartz.plugins.history.LoggingJobHistoryPlugin
org.quartz.plugin.jobInitializer.class = org.quartz.plugins.xml.XMLSchedulingDataProcessorPlugin
org.quartz.plugin.jobInitializer.fileNames = quartz_job.xml
org.quartz.plugin.jobInitializer.failOnFileNotFound = true
org.quartz.plugin.jobInitializer.scanInterval =10
org.quartz.plugin.jobInitializer.wrapInUserTransaction = false

org.quartz.scheduler.skipUpdateCheck = true

quartz_job.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_2_0.xsd"
    version="2.0">
    <schedule>
        <job>

            <name>myjob</name>
            <group>mygroup</group>
            <description>my job</description>
            <job-class>cn.yrm.web.job.MyJob</job-class>
        </job>
        <trigger>
            <cron>
                <name>my trigger</name>
                <group>mygroup</group>
                <job-name>myjob</job-name>
                <job-group>mygroup</job-group>
                <cron-expression>0/5 * * * * ?</cron-expression>
            </cron>
        </trigger>

    </schedule>
</job-scheduling-data>  

Job实现类:

package cn.yrm.web.job;

import org.quartz.DisallowConcurrentExecution;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;

@DisallowConcurrentExecution
public class MyJob implements Job {

    public void execute(JobExecutionContext arg0) throws JobExecutionException {
        // TODO Auto-generated method stub
        System.out.println("my job execute");
    }

}

ServletContextListener实现类:

package cn.yrm.web.listener;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

import org.quartz.CronScheduleBuilder;
import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.Trigger;
import org.quartz.TriggerBuilder;
import org.quartz.impl.StdSchedulerFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import cn.yrm.web.job.MyJob;

public class MyQuatzListener implements ServletContextListener {

    Logger logger = LoggerFactory.getLogger(this.getClass());
    private Scheduler scheduler;

    public void contextDestroyed(ServletContextEvent arg0) {
        logger.info("shutdown scheduler");

        if (scheduler != null) {
            try {
                scheduler.shutdown();
            } catch (SchedulerException e) {
                logger.error(e.getMessage());
                e.printStackTrace();
            }
        }
    }

    public void contextInitialized(ServletContextEvent arg0) {
        logger.info("context initialized begin start quartz");
        try {
            scheduler = StdSchedulerFactory.getDefaultScheduler();
            scheduler.start();

//            JobDetail jobDetail = JobBuilder.newJob(MyJob.class).withIdentity("myJob", "myGroup").build();
//            CronScheduleBuilder cronScheduleBuilder= CronScheduleBuilder.cronSchedule("*/5 * * * * ?");
//            Trigger trigger = TriggerBuilder.newTrigger()
//                    .withIdentity("myTrigger","myGroup")
//                    .startNow().withSchedule(cronScheduleBuilder).build();
//
//            scheduler.scheduleJob(jobDetail, trigger);

        } catch (SchedulerException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

}
时间: 2024-10-23 22:28:06

quart 简单应用的相关文章

Quartz.net 定时任务之简单任务

一.概述 1.quartz.net 是一款从java quartz 上延伸出来的定时任务框架. 2.我在网上看到很多大神写过关于quartz.net 的博客.文章等,在这些博客文章里也学会了很多关于quartz的知识.今天博主也想写一篇关于quartz的文章(不足之处望大神斧正),希望能帮助正在学习quartz路上的兄弟姐妹,顺便也巩固自己. 3.quartz这篇博客会从最基础的开始,之后会逐渐的升级,如果有喜欢的兄弟姐妹,请关注我的博客,博主会持续更新 二.搭建 1.打开vs创建新的mvc空项

quartz.net 基于数据库的简单实现

前面简单学习了通过XML配置或者内存指定的方式实现调度任务.但此用法实战用途较小,企业上多需要分布式集群的方式.quart团队也考虑到了这点,于是有了我们今天要学习的.基于数据库实现分布式. 1 NameValueCollection properties = new NameValueCollection(); 2 3 // 驱动类型,这里用的mysql,目前支持如下驱动: 4 //Quartz.Impl.AdoJobStore.FirebirdDelegate 5 //Quartz.Impl

js动画(animate)简单引擎代码示例

var animation = function(obj) {    this.obj = obj;    this.frames = 0;    this.timmer = undefined;    this.running = false;    this.ms = [];} animation.prototype = {    fps: 36,    init: function(props, duration, tween) {        //console.log('初始化');

Quartz的简单使用,基于1.X(一)【入门及CronTrigger】

 什么是Quartz Quartz是一个完全由Java编写的开源作业调度框架,为在Java应用程序中进行作业调度提供了简单却强大的机制.Quartz允许开发人员根据时间间隔来调度作业.它实现了作业和触发器的多对多的关系,还能把多个作业与不同的触发器关联.简单地创建一个org.quarz.Job接口的Java类,Job接口包含唯一的方法:     public void execute(JobExecutionContext context) throws JobExecutionExceptio

.NET中Quartz任务调度器的简单应用实例

1.首先从NuGet中安装Quartz,安装最新版本就OK 2.新建一个Job类实现Quart中的IJob接口用于执行业务逻辑,代码如下: class CheckUpdateJob : IJob { public async Task Execute(IJobExecutionContext context) { //在此处实现业务 } } 3.新建一个任务执行类用于启动任务,代码如下: class JobController { //调度器 IScheduler scheduler; //调度

Quartz.net 3.x使用总结(一)——简单使用

原文:Quartz.net 3.x使用总结(一)--简单使用 阅读目录 1.Quartz.net简介 2.简单使用 3.TriggerBuilder介绍 3.1  SimpleSchedule 3.2  CalendarIntervalSchedule 3.3  DailyTimeIntervalSchedule 3.4  CronSchedule 4.Scheduler介绍 5.Calendar介绍 6.Listener介绍 回到顶部 1.Quartz.net简介 Quartz.NET是一个强

C# Ping 简单使用

编程过程中,有时候需要判断主机是否在线,最简单的方法就是使用Windows的Ping命令看看能否ping通.看到网上很多文章,说用C#去调用windows的ping.exe,然后解析返回的字符串.我觉得这种方式太麻烦了,就做一下简单判断,不想弄那么麻烦. 查了一下,C#专门提供了一个Ping类,与Windows下的ping命令类似: 命令空间: System.Net.NetworkInformation; 使用方法: bool online = false; //是否在线 Ping ping =

自动生成简单四则运算的C语言程序

该程序是在博客园里面找的,具体是谁的找了半天没找到,无法提供它原本的链接.由于自己写的过于简单,且有一些功能暂时无法实现,所以就找了一个来应付作业,望原谅.在这个程序的源码中我改了一个错误的地方,源码中有这样一个随机数发生器的初始化函数的语句:"srand((unsigned)time(NULL))".srand函数是随机数发生器的初始化函数.但是正确的写法应该是:srand(unsigned( time(NULL))):为了防止随机数每次重复,常常使用系统时间来初始化,即使用time

Mysql的锁机制与PHP文件锁处理高并发简单思路

以购买商品举例: ① 从数据库获取库存的数量. ② 检查一下库存的数量是否充足. ③ 库存的数量减去买家购买的数量(以每个用户购买一个为例). ④ 最后完成购买. 仅仅这几行逻辑代码在并发的情况下会出现问题,自己可以想象一下. 这里暂时就不测试了,下面会针对并发的处理给出测试结果. 创建表: CREATE TABLE `warehouse` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id', `stock` int(11) NOT NULL