Schedule配置 ?线程数量
如果一个Schedule中有很多任务,这样默认的10个线程就不够用了。
有很多种方法配置线程的个数。
工厂构造函数
webfonfig
quartzconfig
环境变量
建议使用webconfig
quartz.scheduler.instanceName = ExampleDefaultQuartzSchedulerquartz.threadPool.threadCount = 15quartz.jobStore.misfireThreshold = 60000# sample configuration based db providerquartz.dbprovider.customProvider.productName = Microsoft SQL Server, provider V2.0.0.0 in framework .NET V2.0quartz.dbprovider.customProvider.assemblyName = System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089quartz.dbprovider.customProvider.connectionType = System.Data.SqlClient.SqlConnection, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089quartz.dbprovider.customProvider.commandType = System.Data.SqlClient.SqlCommand, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089quartz.dbprovider.customProvider.parameterType = System.Data.SqlClient.SqlParameter, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089quartz.dbprovider.customProvider.parameterDbType = System.Data.SqlDbType, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089quartz.dbprovider.customProvider.parameterDbTypePropertyName = SqlDbTypequartz.dbprovider.customProvider.parameterNamePrefix = @quartz.dbprovider.customProvider.exceptionType = System.Data.SqlClient.SqlException, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089quartz.dbprovider.customProvider.useParameterNamePrefixInParameterCollection = truequartz.dbprovider.customProvider.bindByName = truequartz.dbprovider.customProvider.dbBinaryTypeName = Image
优先级
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(); ???????}
Quartz.Net—配置化
原文地址:https://www.cnblogs.com/wudequn/p/8627598.html