软件架构:Quartz的个性实现

   Quartz 是个开放源码项目,提供了丰富的作业调度集。接口简单而强大。Quartz还提供了我们项目开发中的个性实现。默认的Quartz配置如下:

    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

 

    从这里我们可以看到默认的Quartz同时最多只能执行10个任务(org.quartz.threadPool.threadCount = 10)。执行优先权是先到先执行(FIFO),也就是队列执行。

    如果我们的项目中有比较特殊的要求,比如我们一台服务器上可以同时执行50个任务;或者我们要对某一类任务的同时执行数就性限制,就是想要更加细化的控制。

    如果仅仅是对同时执行数就行控制的话,我在自己的/src的下面建立一个quartz.properties配置文件,拷贝默认的配置内容后,修改org.quartz.threadPool.threadCount =想要的同时执行数。

        例如:org.quartz.threadPool.threadCount =50

    如果我们需要对某一类作业的同时作业数进行限制,这个限制在具体的系统中是必要的,比如邮件批发送,数据抽出。因为占用资源较多,如果不限制的话,服务器负担很大。要实现这样的功能的话,就得自己写一个个性话的org.quartz.threadPool.class线程池类。然后修改org.quartz.threadPool.class=自己的个性化线程池类。

    Quartz可以设置多中调度方法,比如即时执行,预约执行,CRON执行。但是如果我们中途把预约执行的job删除掉了,就需要在自己的个性线程池中判断一下是否已经被外面删除了,如果已经删除了就不用投入执行了。

    因此这样的个性实现是我们有了更多的空间来发挥。对各种各样需求的系统来说具有更好的灵活性。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值