本文介绍了来自ASP.NET中config.xml的Quartz.NET的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有人可以建议我做错了什么吗?我试图设置石英,以便在启动时将读取一个xml配置文件.文件中有一个激活我的 HelloEmail_Job.cs 类的作业(它是正确创建的,使用execute方法中的逻辑扩展了 IJob ).xml还为该作业提供了cron触发器,该触发器将每分钟触发一次(纯粹是为了测试).

Can someone advise on what I am doing wrong.I am trying to setup quartz so that on startup it will read an xml config file. Inside the file there is a job that activates my HelloEmail_Job.cs class (it is created correctly, extending IJob with the logic in the execute method). The xml also has a cron trigger for the job that will fire every minute (purely for testing).

但是一切都开始运行,没有错误,但是工作从未触发.我确定配置错误.

But everything starts up without an error, but the job never fires. I am sure I am configuring wrong.

我有一个处理调度程序生成的单例,调度程序在应用程序启动时启动(在 global.asax 文件中)

I have a singleton that handles the generation of my scheduler, the scheduler starts on startup of my app (in the global.asax file)

    NameValueCollection properties = new NameValueCollection();
    properties["quartz.scheduler.instanceName"] = "RemoteServer";

    ////// set thread pool info
    properties["quartz.threadPool.type"] = "Quartz.Simpl.SimpleThreadPool, Quartz";
    properties["quartz.threadPool.threadCount"] = "5";
    properties["quartz.threadPool.threadPriority"] = "Normal";

    properties["quartz.jobStore.type"] = "Quartz.Impl.AdoJobStore.JobStoreTX, Quartz";
    properties["quartz.jobStore.useProperties"] = "true";
    properties["quartz.jobStore.dataSource"] = "default";
    properties["quartz.jobStore.tablePrefix"] = "QRTZ_";
    properties["quartz.jobStore.lockHandler.type"] = "Quartz.Impl.AdoJobStore.UpdateLockRowSemaphore, Quartz";

    properties["quartz.dataSource.default.connectionString"] = "Data Source=CRAIG-PC\\SQLEXPRESS;Initial Catalog=MCWdb;User ID=sa;Password=mastercrud;";
    properties["quartz.dataSource.default.provider"] = "SqlServer-20";

    // job initialization plugin handles our xml reading, without it defaults are used
    properties["quartz.plugin.xml.type"] = "Quartz.Plugin.Xml.XMLSchedulingDataProcessorPlugin, Quartz";
    properties["quartz.plugin.xml.fileNames"] = "~/quartz_jobs.xml";

    ISchedulerFactory sf = new StdSchedulerFactory(properties);
    _sched = sf.GetScheduler();

我的 quartz_jobs.xml 文件如下所示:

        <?xml version="1.0" encoding="UTF-8"?>

        <job-scheduling-data xmlns="http://quartznet.sourceforge.net/JobSchedulingData"
                xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                        version="2.0">

          <processing-directives>
            <overwrite-existing-data>true</overwrite-existing-data>
          </processing-directives>

          <schedule>
                <job>
                  <job-detail>
                    <name>MyJob</name>
                    <group>MyJobs</group>
                    <description>sends out a test email</description>
                      <job-type>HelloEmail_Job</job-type>
                      <volatile>false</volatile>
                    <durable>true</durable>
                    <recover>false</recover>
                    <job-data-map>
                      <entry>
                        <key>Body</key>
                        <value>Hello From your website!!!!!!!!</value>
                      </entry>
                    </job-data-map>
                  </job-detail>
                  <trigger>
                    <cron>
                      <name>MyJobTrigger</name>
                      <group>MyJobs</group>
                      <description>A description</description>
                      <job-name>MyJob</job-name>
                      <job-group>MyJobs</job-group>
                      <cron-expression>0 0/1 * 1/1 * ? *</cron-expression>
                    </cron>
                  </trigger>
                </job>
            </schedule>

        </job-scheduling-data>

我知道,通过一个简单的触发器,临时作业的调度程序就可以正确运行,因为当我的应用创建并动态调度它们时,它可以完美地运行.但是我希望逻辑可以重复(通过cron),并且可以通过xml配置.

I know that the scheduler is running correctly for ad hoc jobs with a simple trigger because when my app creates them and schedules them dynamically it works perfectly. But I want the logic made repeatable (through a cron), and configurable through a xml.

我的直觉是JOB_TYPE值是错误的.

My gut feeling is that the JOB_TYPE value is wrong.

推荐答案

您的工作类型需要指定为

Your job type needs to be specified as

<job-type>Fully.Qualified.Type.Name, AssemblyNameWithoutTheDllExtension</job-type>

这篇关于来自ASP.NET中config.xml的Quartz.NET的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

05-29 00:12
查看更多