Schedule配置 線程數量
若是一個Schedule中有不少任務,這樣默認的10個線程就不夠用了。html
有不少種方法配置線程的個數。web
工廠構造函數架構
webfonfigapp
quartzconfigasync
環境變量ide
建議使用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
優先級spa
NameValueCollection 構造函數>環境變量>app.config>web.config.net
上面的都是爲了修改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(); }