Quartz创建多个不同名字的scheduler实例
- _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实例的更多相关文章
- 使用Quartz创建定时任务
项目开发中经常需要定时循环执行某些任务 比如定时发送报表,定时发送邮件,亦或者定时清理缓存,定时更新数据等等 有些时候可以简单地利用Windows Server的计划任务执行程序 Linux也有相应的 ...
- .net core+topshelf+quartz创建windows定时任务服务
.net core+topshelf+quartz创建windows定时任务服务 准备工作 创建.net core 控制台应用程序,这里不做过多介绍 添加TopShelf包:TopShelf: 添加Q ...
- C#创建windows服务搭配定时器Timer使用实例(用代码做,截图版)
功能说明:C#创建一个windows服务,服务启动时D:\mcWindowsService.txt写入数据,服务运行期间每隔两秒写入当前时间. 原理这些就不说了,三语两语说不清楚,直接贴一个实例 ...
- 创建Oracle数据库、数据库名与实例名与SID之间的关系(图文详解)
分类: Oracle(9) 版权声明:转载请注明出处 JmilkFan_范桂飓:http://blog.csdn.net/jmilk 目录(?)[+] 目录 目录 软件环境 前言 安装Oracle监听 ...
- JS创建类的方法--简单易懂有实例
版权声明:本文为博主原创文章,转载请注明出处 Javascript是一种基于对象的语言,你遇到的所有东西几乎都是对象.但是,它又不是一种真正的面向对象编程(OOP)语言,因为它的语法中没有Class. ...
- ThinkPHP创建应用的一般开发流程及实例
Thinkphp是免费开源的php框架,提供了建站所需要的各种组件,方便用户快速建设部署网站. Thinkphp简介:http://thinkphp.cn/Manual/16 官方完全开发手册:htt ...
- 创建node.js一个简单的应用实例
在node.exe所在目录下,创建一个叫 server.js 的文件,并写入以下代码: //使用 require 指令来载入 http 模块 var http = require("http ...
- C#中WebService的创建、部署和调用的简单实例
webservice 可以用于分布式应用程序之间的交互,和不同程序之间的交互. 概念性的东西就不说太多,下面开始创建一个简单的webservice的例子. 一:WebService的创建开发 先新建一 ...
- MariaDB数据库 ----数据库简介,用户管理,数据库创建,数据类型、数据增删改(实例演示)
数据库简介 数据库--即电子文件柜,用户可以对文件中的数据进行增,删,改,查等操作. 数据库分类 关系型数据库 关系型数据库管理系统(Relational Database Management Sy ...
随机推荐
- BigDecimal处理加减乘除
public static void main(String[] args) { BigDecimal totalDoneAmt = new BigDecimal(2); Double d1 = ad ...
- Elasticsearch、MongoDB、Hadoop适用场景
如果你仅仅想要通过关键字和简单的分析,那么Elasticsearch可以完成任务: 如果你需要查询文档,并且包含更加复杂的分析过程,那么MongoDB相当适合: 如果你有一个海量的数据,需要大量不同的 ...
- logstash编写2以及结合kibana使用
有时候根据日志的内容,可能一行不能全部显示,会延续在下一行,为了将上下内容关联在一起,于是codec插件中的multiline插件 就派上用场了,源日志内容: [2017-09-20T16:04:34 ...
- 20145314郑凯杰 《Java程序设计》第2周学习总结 代码开始!
---恢复内容开始--- 20145314郑凯杰 <Java程序设计>第2周学习总结 代码开始! 教材学习内容总结 跟着教材的顺序开始总结我学过的内容: 1编辑.编译.运行教材上代码 这部 ...
- ARTS Week 002
Algorithm Leetcode 2. Add Two Numbers You are given two non-empty linked lists representing two non- ...
- 彻底搞懂hashCode与equals的作用与区别及应当注意的细节
以前写程序一直没有注意hashCode的作用,一般都是覆盖了equals,缺没有覆盖hashCode,现在发现这是埋下了很多潜在的Bug!今天就来说一说hashCode和equals的作用. 先来试想 ...
- 关于JavaScript对象,你所不知道的事(一)- 先谈对象
这篇博文的主要目的是为了填坑,很久之前我发表了一篇名为关于JavaScript对象中的一切(一) - 对象属性的文章,想要谈一谈JavaScript对象,可那时只是贴了一张关于这个主题的思维导图,今天 ...
- MySQL INSERT语句
insert的语法 INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE] [INTO] tbl_name [(col_name,...)] ...
- 深度学习中 Batch Normalization为什么效果好
看mnist数据集上其他人的CNN模型时了解到了Batch Normalization 这种操作.效果还不错,至少对于训练速度提升了很多. batch normalization的做法是把数据转换为0 ...
- centos双机热备份
centos双机热备份 本机没有用到F5硬件,用到的是radware. 现在有2台服务器:192.168.2.66, 192.168.2.67 有一个公网ip:xxx.xxx.xx.203 将67上冷 ...