zoukankan      html  css  js  c++  java
  • Quartz.Net—配置化

    Schedule配置  线程数量

    如果一个Schedule中有很多任务,这样默认的10个线程就不够用了。

    有很多种方法配置线程的个数。

    工厂构造函数

    webfonfig

    quartzconfig

    环境变量

    建议使用webconfig

    quartz.scheduler.instanceName = ExampleDefaultQuartzScheduler
    
    quartz.threadPool.threadCount = 15
    
    quartz.jobStore.misfireThreshold = 60000
    
    # sample configuration based db provider
    quartz.dbprovider.customProvider.productName = Microsoft SQL Server, provider V2.0.0.0 in framework .NET V2.0
    quartz.dbprovider.customProvider.assemblyName = System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
    quartz.dbprovider.customProvider.connectionType = System.Data.SqlClient.SqlConnection, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
    quartz.dbprovider.customProvider.commandType = System.Data.SqlClient.SqlCommand, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
    quartz.dbprovider.customProvider.parameterType = System.Data.SqlClient.SqlParameter, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
    quartz.dbprovider.customProvider.parameterDbType = System.Data.SqlDbType, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
    quartz.dbprovider.customProvider.parameterDbTypePropertyName = SqlDbType
    quartz.dbprovider.customProvider.parameterNamePrefix = @
    quartz.dbprovider.customProvider.exceptionType = System.Data.SqlClient.SqlException, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
    quartz.dbprovider.customProvider.useParameterNamePrefixInParameterCollection = true
    quartz.dbprovider.customProvider.bindByName = true
    quartz.dbprovider.customProvider.dbBinaryTypeName = Image
    View Code

    优先级

    NameValueCollection 构造函数>环境变量>app.config>web.config

    上面的都是为了修改threadcount的数量。是通过反射做的。当然也可以修改其他的变量。

    Job  Trigger配置文件

    配置文件的好处,不用修改代码,只修改配置文件,就可以动态的更新任务。

    Job和Trigger的配置通过插件来实现的。源码中插件项目和quartz项目分开的,需要自己手动合并到一个项目里,不然就要添加三个dll。

     

    在源码中有一个xsd文件,这个是job trigger配置文件的架构。把他添加到vs里面xml就会提示job和trigger的xml代码了。

    XMLSchedulingDataProcessor是一个专门解析job trigger配置文件的类。 配置文件默认名字是

    <?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>
        <!--如果程序中定义过trigger和job 将安装这个配置文件中的执行-->
        <overwrite-existing-data>true</overwrite-existing-data>
        <!--不管重复的。 如果是true  程序中将会忽略这个文件中出现的配置。-->
        <!--<ignore-duplicates></ignore-duplicates>-->
      </processing-directives>
      <schedule>
        <job>
          <name>xmlJob</name>
          <group>xmlJobGroupName</group>
          <description>xmlJob</description>
          <!--job的类             类完整名字,程序集名字-->
          <job-type>FrmTimingQuartz.MyJob7, FrmTimingQuartz</job-type>
          <!--持久性-->
          <durable>true</durable>
          <!--恢复-->
          <recover>true</recover>
          <job-data-map>
            <entry>
              <key>name1</key>
              <value>wyx</value>
            </entry>
            <entry>
              <key>key2</key>
              <value>wdq</value>
            </entry>
          </job-data-map>
        </job>
        <trigger>
          <!--四大触发器-->
          <!--http://www.cnblogs.com/wudequn/p/8506938.html-->
          <calendar-interval>
          </calendar-interval>
          <simple>
            <name>xmlTrigger</name>
            <description>xmlTrigger</description>
            <job-name>xmlJob</job-name>
            <job-group>xmlJobGroupName</job-group>
            <priority></priority>
            <!---1无限大-->
            <repeat-count>-1</repeat-count>
            <!--多久轮询一次-->
            <repeat-interval>1000</repeat-interval>
          </simple>
          
        </trigger>
      </schedule>
    </job-scheduling-data>
    配置文件
            private async void button16_Click(object sender, EventArgs e)
            {
                //quartz.plugin.xml.type  第一部分是类全名  第二部分是类所在程序集
                NameValueCollection nvc = new NameValueCollection() {
                    ["quartz.plugin.xml.type"] = "Quartz.Plugin.Xml.XMLSchedulingDataProcessorPlugin,Quartz.Plugins, Quartz.Plugins",
                    ["quartz.plugin.xml.fileNames"] = "~/quartz_jobs.xml",
                    //三秒都一次配置文件,这只这个参数可以让 修改了配置文件也不用重新启动程序。
                    ["quartz.plugin.xml.ScanInterval"] = "3"
                };
                //通过namevalue初始化他的各个属性。
                var tf = new StdSchedulerFactory(nvc);
    
                var sche = await tf.GetScheduler();
    
                await sche.Start();
    
    
            }
    调用代码
  • 相关阅读:
    发现个atan2的正确使用方式
    Forward+ Shading架构
    fatal: unable to connect to gitee.com: gitee.com[0: 180.97.125.228]: errno=Unknown error 解决方案
    HDFS HA(高可用性)集群规划
    如何使用RTP引擎对语音编码进行转码
    关于 Angular 应用 tsconfig.json 中的 target 属性
    浅谈 Orbeon form builder 的权限控制
    关于 Angular 应用 tsconfig.json 中的 lib 属性
    orbeon form 通过 url 的方式同第三方应用集成的开发明细
    orbeon form 的配置介绍
  • 原文地址:https://www.cnblogs.com/wudequn/p/8627598.html
Copyright © 2011-2022 走看看