通过查看文件夹在 Quartz 中动态安排作业

问题描述 投票:0回答:2

使用代码安排作业很容易,但我想根据文件夹的内容安排作业。

例如:我希望“\MyApp\Jobs”中的文件夹包含一些 XML 文件,这些文件将包含有关要安排的 IJob 的信息。

问题是我希望监视此文件夹的更改(对于 XML 文件),并且当找到新文件时,将使用 XML 中包含的信息安排新的 IJob。

我应该怎么做才能实现这样的机制?

quartz-scheduler
2个回答
0
投票

java.io.File 有一些 listFiles() 方法,可以列出目录的内容。如果您想以某种方式限制返回的文件名,请使用 FileFilterFilenameFilter。在带有“睡眠”的循环中执行此操作(例如 60 秒),以避免耗尽所有 CPU。


0
投票

您不需要使用文件观察器来观察文件的更改。 创建石英属性文件时,它有以下选项

org.quartz.plugin.jobInitializer.scanInterval = 5

扫描 xml 文件更改。因此在上述情况下,它每 5 秒扫描一次

我完整的quartz.property文件如下

org.quartz.scheduler.instanceName = MyScheduler
org.quartz.threadPool.threadCount = 3
org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore
org.quartz.plugin.jobInitializer.class =org.quartz.plugins.xml.XMLSchedulingDataProcessorPlugin
org.quartz.plugin.jobInitializer.fileNames =C:/Users/Admin/Documents/NetBeansProjects/QXmlTest/src/java/quartz-config.xml
org.quartz.plugin.jobInitializer.failOnFileNotFound =true
org.quartz.plugin.jobInitializer.scanInterval = 5
org.quartz.plugin.jobInitializer.wrapInUserTransaction= true

我在这个

quartz-config.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>AJob</name>
            <group>AGroup</group>
            <description>Print a welcome message</description>
            <job-class>mypackage.SchedulerJob</job-class>
       </job>
       <trigger>
           <cron>
               <name>dummyTriggerName</name>
               <job-name>AJob</job-name>
               <job-group>AGroup</job-group>
               <!-- It will run every 5 seconds -->
               <cron-expression>0/5 * * * * ?</cron-expression>
           </cron>
       </trigger>
    </schedule>
</job-scheduling-data>

请注意,我使用的是quartz java api。

© www.soinside.com 2019 - 2024. All rights reserved.