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();
    
    
            }
    调用代码
  • 相关阅读:
    Unity3D_08_XML文件创建,读取,修改,添加
    Unity3D_07_日志、文本打印
    Unity3D_06_根据Transform、GameObject和Tag获取子对象集合
    Unity3D_05_理解Unity的新GUI系统(UGUI)
    Unity3D_04_GameObject,Component,Time,Input,Physics
    Unity3D_03_代码及效率优化总结
    Unity3D_02_基类MonoBehaviour/自带函数以及脚本执行的生命周期
    Unity3D_01_各种寻找GameObject方法
    人工智能相关
    ubuntu 安装 typora
  • 原文地址:https://www.cnblogs.com/wudequn/p/8627598.html
Copyright © 2011-2022 走看看