• _http://my.oschina.net/laiweiwei/blog/122280

      • 需求
        创建多个不同的Scheduler实例,每个实例自主启动、关闭
      • 问题
        如果直接用
      • SchedulerFactory sf = newStdSchedulerFactory();
      • Scheduler scheduler = sf.getScheduler();
      • 获取的scheduler是从仓储SchedulerRepository里面取出来的,仓储注册scheduler的时候为每个scheduler分配
        一个唯一的名字,问题就在于这里,Quartz默认有个配置文件quartz.properties,里面定义了这个名字,这样的话,每次通过
        sf.getScheduler()获取的都是同一个实例,(假设你认为get出来的都是不同实例)把其中的某一个shceduler
        shutdown的话,其他scheduler也会关闭掉,因为它们其实是同一个实例!

        尝试使用:

      • sf.getScheduler("给定名字")
      • 发现返回的都是null,翻看源码,此方法并没有进行创建对象的逻辑。而仅仅是lookup而已!

        然后再尝试通过DirectSchedulerFactory.getInstance().createXXX的方法创建Scheduler实例,结果发现这些方法的参数...:

      • .createScheduler(schedulerName, schedulerInstanceId, threadPool, jobStore);
      • 这确实很灵活!但是真TM底层!突然感到很无奈。

        Google了很久,StackOverFlow上面也有类似的问题,但是都说没有API直接提供创建给定名字的Scheduler实例。但是无意中想起
        来,Quartz貌似支持配置文件初始化的,于是翻到了Quartz的默认配置文件(在其jar包里)quartz.properties。

      • # Default Properties file for use by StdSchedulerFactory

        # to create a Quartz Scheduler Instance, if a different
        # properties file is not explicitly specified.
        org.quartz.scheduler.instanceName: DefaultQuartzScheduler
        org.quartz.scheduler.rmi.export: false
        org.quartz.scheduler.rmi.proxy: false
        org.quartz.scheduler.wrapJobExecutionInUserTransaction: false
        org.quartz.threadPool.class: org.quartz.simpl.SimpleThreadPool
        org.quartz.threadPool.threadCount: 10
        org.quartz.threadPool.threadPriority: 5
        org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread: true
        org.quartz.jobStore.misfireThreshold: 60000
      org.quartz.jobStore.class: org.quartz.simpl.RAMJobStore

    • 于是就照葫芦画瓢的,将这些配置内容拷贝一份,在代码里写到一个Properties里面,然后调用初始化方法。搞定!
    • 解决方案
      显式使用StdSchedulerFactory,调用其initialize方法,并且自己定义填写配置内容:
    • 1    StdSchedulerFactory sf = new StdSchedulerFactory();
      2    Properties props = new Properties();
      3    props.put("org.quartz.scheduler.instanceName", "你定义的名字");
      4    props.put("org.quartz.threadPool.threadCount", "10");#必填
      5    sf.initialize(props);
      6    scheduler = sf.getScheduler();
      7    System.out.println(scheduler.getSchedulerName());
      8    scheduler.shutdown();
    • 以上方案通过初步测试使用。但是还需要在生产环境下使用看看......反馈情况将在这里补填

      =================== 最新反馈 2013-05-08 11:39 ========================
      经过近两个月的生产环境使用,发现以上解决方案可行,推荐使用之

Quartz创建多个不同名字的scheduler实例的更多相关文章

  1. 使用Quartz创建定时任务

    项目开发中经常需要定时循环执行某些任务 比如定时发送报表,定时发送邮件,亦或者定时清理缓存,定时更新数据等等 有些时候可以简单地利用Windows Server的计划任务执行程序 Linux也有相应的 ...

  2. .net core+topshelf+quartz创建windows定时任务服务

    .net core+topshelf+quartz创建windows定时任务服务 准备工作 创建.net core 控制台应用程序,这里不做过多介绍 添加TopShelf包:TopShelf: 添加Q ...

  3. C#创建windows服务搭配定时器Timer使用实例(用代码做,截图版)

       功能说明:C#创建一个windows服务,服务启动时D:\mcWindowsService.txt写入数据,服务运行期间每隔两秒写入当前时间. 原理这些就不说了,三语两语说不清楚,直接贴一个实例 ...

  4. 创建Oracle数据库、数据库名与实例名与SID之间的关系(图文详解)

    分类: Oracle(9) 版权声明:转载请注明出处 JmilkFan_范桂飓:http://blog.csdn.net/jmilk 目录(?)[+] 目录 目录 软件环境 前言 安装Oracle监听 ...

  5. JS创建类的方法--简单易懂有实例

    版权声明:本文为博主原创文章,转载请注明出处 Javascript是一种基于对象的语言,你遇到的所有东西几乎都是对象.但是,它又不是一种真正的面向对象编程(OOP)语言,因为它的语法中没有Class. ...

  6. ThinkPHP创建应用的一般开发流程及实例

    Thinkphp是免费开源的php框架,提供了建站所需要的各种组件,方便用户快速建设部署网站. Thinkphp简介:http://thinkphp.cn/Manual/16 官方完全开发手册:htt ...

  7. 创建node.js一个简单的应用实例

    在node.exe所在目录下,创建一个叫 server.js 的文件,并写入以下代码: //使用 require 指令来载入 http 模块 var http = require("http ...

  8. C#中WebService的创建、部署和调用的简单实例

    webservice 可以用于分布式应用程序之间的交互,和不同程序之间的交互. 概念性的东西就不说太多,下面开始创建一个简单的webservice的例子. 一:WebService的创建开发 先新建一 ...

  9. MariaDB数据库 ----数据库简介,用户管理,数据库创建,数据类型、数据增删改(实例演示)

    数据库简介 数据库--即电子文件柜,用户可以对文件中的数据进行增,删,改,查等操作. 数据库分类 关系型数据库 关系型数据库管理系统(Relational Database Management Sy ...

随机推荐

  1. SeekArc

    https://github.com/neild001/SeekArc https://github.com/imflyn/SeekArc

  2. 机器学习实战笔记(Python实现)-07-模型评估与分类性能度量

    1.经验误差与过拟合 通常我们把分类错误的样本数占样本总数的比例称为“错误率”(error rate),即如果在m个样本中有a个样本分类错误,则错误率E=a/m:相应的,1-a/m称为“精度”(acc ...

  3. 20145322第一次JAVA实验报告

    20145322第一周JAVA实验报告 课程:Java程序设计 班级:1453 指导教师:娄嘉鹏 实验名称:Java开发环境的熟悉(Linux + Eclipse) 实验日期:2016.04.08 实 ...

  4. Java使用BigDecimal解决精确计算的问题

    最近有人在微信上给我发了一个数学题目,如下图: 我看了之后感觉很是简单,但是却想了半天才解出来.解出来后我想到了用程序再解一遍,然而精确计算的问题却让人头疼不已. 解题思路: 思路其实很简单,暴力求解 ...

  5. 4.9版本的linux内核中实时时钟芯片pt7c4338的驱动源码在哪里

    答:drivers/rtc/rtc-ds1307.c,内核配置项为CONFIG_RTC_DRV_DS1307 Location: -> Device Drivers -> Real Tim ...

  6. Centos为mysql开启binlog

    1.查询mysql配置文件所在位置 2.编辑配置文件/etc/my.cnf 在文件尾部添加: log-bin=/var/lib/mysql/mysql-bin server-id=123454  (5 ...

  7. java基础笔试题二(集合关系)

    知识点:java集合继承关系(Collection,Map) 1.集合框架体系图 2.java的集合层次 来自博客(http://blog.csdn.net/stubbornaccepted/arti ...

  8. Stm32F103面向对象编程之GPIO

    STM32F103 GPIO面向对象变成实例 创建一个GPIO对象 GpioClass gStateLed = NEW_GPIO(C, 0, GPIO_Mode_Out_PP); 初始化对象 Gpio ...

  9. webjars-jquery的引用

    什么是WebJars WebJars以jar包的形式来使用前端的各种框架.组件,如jquery.bootstrap WebJars将客户端(浏览器)资源(JavaScript,Css等)打成jar包文 ...

  10. C# Memcached 缓存

    之前做的功能,程序可能有不足之处,但还是要记录下 ICacheStrategy.cs文件 public interface ICacheStrategy { /// <summary> / ...