1

Quartz .NET構成ファイルのセットアップにおける自分の見落としであると私が思うことに、私は呆然としました。フォーラムで同様の投稿を検索しました。この投稿「asp.netのconfigxmlからのquartz.net 」が最も関連性がありますが、残念ながら役に立ちませんでした。人々が考えることができる助けやアドバイスをいただければ幸いです。

Quartzバージョン1を使用していくつかのジョブをスケジュールするために構成ファイルをロードしようとしています。私のapp.configファイルはQuartz構成を定義します。

<quartz>
        <add key="quartz.scheduler.instanceName" value="QuartzScheduler" />
        <!-- Configure Thread Pool -->
        <add key="quartz.threadPool.type" value="Quartz.Simpl.SimpleThreadPool, Quartz" />
        <add key="quartz.threadPool.threadCount" value="10" />
        <add key="quartz.threadPool.threadPriority" value="Normal" />
        <!-- Configure Job Store -->
        <add key="quartz.jobStore.type" value="Quartz.Simpl.RAMJobStore, Quartz" />
        <add key="quartz.plugin.xml.type" value="Quartz.Plugin.Xml.JobInitializationPlugin, Quartz" />
        <add key="quartz.plugin.xml.fileNames" value="~/configuration/quartz_jobs.config" />
        <add key="quartz.plugin.xml.scanInterval" value="10" />
    </quartz>

次に、私のquartz_jobs.configファイルでジョブを定義します。

<?xml version="1.0" encoding="UTF-8"?>
<quartz xmlns="http://quartznet.sourceforge.net/JobSchedulingData"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                version="1.0"
                overwrite-existing-jobs="true">

    <job>
        <job-detail>
            <name>jobName1</name>
            <group>jobGroup1</group>
            <description>jobDesciption1</description>
            <job-type>FundDataImportScheduler.Jobs.FsdImportJob, FundDataImportScheduler</job-type>
            <volatile>false</volatile>
            <durable>true</durable>
            <recover>false</recover>
        </job-detail>

        <trigger>
            <cron>
                <name>cronName1</name>
                <group>cronGroup1</group>
                <description>CronTriggerDescription</description>
                <job-name>jobName1</job-name>
                <job-group>jobGroup1</job-group>
                <cron-expression>0 0/1 * * * ?</cron-expression>
            </cron>
        </trigger>
    </job>
</quartz>

quartz_jobs.configファイルのノードに注意してください。IJobを実装するクラスを読み込もうとしています。

public class FsdImportJob : IJob
{
   public void Execute(JobExecutionContext context)
   {
     Console.WriteLine("FsdImportJob triggered");
   }
}

私が抱えている問題は、ノードが「FundDataImportScheduler.Jobs.FsdImportJob、FundDataImportScheduler」に等しい場合、ジョブがロードされないことです。ノードで「Quartz.Job.NativeJob、Quartz」の値を使用してテストすると、ジョブがロードされます(ただし、必要なジョブではありません)。

FundDataImportScheduler.Jobs.FsdImportJobは、クラスFsdImportJobの正確な名前空間であり、FundDataImportSchedulerは、コンパイルされるdllです。

完全を期すために、QuartzSchedulerFactoryをビルドして構成をロードするために使用しているコードは次のとおりです。

ISchedulerFactory schedulerFactory = new StdSchedulerFactory();
IScheduler scheduler = schedulerFactory.GetScheduler();
scheduler.Start();

私がどこで間違っているのかについてのポインタをいただければ幸いです。

どうもありがとう、

チマ

4

1 に答える 1

1

さて、今は少しばかげていると感じています。問題は、最初にコンソールアプリにFsdImportJobクラスがあったためです。QuartzはFundDataImportScheduler.dllを期待していましたが、もちろん、FundDataImportScheduler.exeしかありませんでした。

FsdImportJobをクラスライブラリに移動すると、Quartzはコンパイルされたライブラリの.dllをロードできるようになり、FsdImportJobクラスをロードできるようになりました。

どうもありがとう、

チマ

于 2012-06-11T12:59:52.917 に答える