Quartz.Net—配置化
2024-08-27 00:43:23
Schedule配置 线程数量
如果一个Schedule中有很多任务,这样默认的10个线程就不够用了。
有很多种方法配置线程的个数。
工厂构造函数
webfonfig
quartzconfig
环境变量
建议使用webconfig
quartz.scheduler.instanceName = ExampleDefaultQuartzScheduler quartz.threadPool.threadCount = quartz.jobStore.misfireThreshold = # sample configuration based db provider
quartz.dbprovider.customProvider.productName = Microsoft SQL Server, provider V2.0.0. in framework .NET V2.
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
优先级
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>-</repeat-count>
<!--多久轮询一次-->
<repeat-interval></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"] = ""
};
//通过namevalue初始化他的各个属性。
var tf = new StdSchedulerFactory(nvc); var sche = await tf.GetScheduler(); await sche.Start(); }
调用代码
最新文章
- Unity 延迟执行一段代码的较为优雅的方式
- IOI2015 Boxes
- 排序练习——找出前m大的数字 分类: 排序 2015-06-08 09:33 21人阅读 评论(0) 收藏
- UML_行为图
- 2013Esri全球用户大会之ArcGIS for Desktop
- opencv-阈值处理
- 从底层谈WebGIS 原理设计与实现(三):WebGIS前端地图显示之根据地理范围换算出瓦片行列号的原理(转载)
- 倒计时(距离活动结束还有X天X小时X分X秒)
- DLL生成与使用的全过程
- hdu_4869(费马小定理+快速幂)
- 01.在vue中通过 JSONP 方式来跨域
- react~props和state的介绍与使用
- 防止Web表单重复提交的方法总结
- ExtJS4.2下将表单元素放在菜单时不能进行拷贝的问题解决办法
- rocketmq的name server启动时的jvm参数配置
- Python类中的装饰器在当前类中的声明与调用
- eclipse中java build path下 allow output folders for source folders 无法勾选,该如何解决 eclipse中java build path下 allow output folders for source folders 无法勾选,
- kubernetes下的Nginx加Tomcat三部曲之二:细说开发
- CKEditor4.x整合教程-Xproer.WordPaster
- Kubernetes 针对资源紧缺处理方式的配置
热门文章
- 2018-2019-2 网络对抗技术 20165212 Exp6 信息搜集与漏洞扫描
- nodejs五子棋online游戏开发视频教程,客户端cocos creator js
- Flink实时处理并将结果写入ElasticSearch实战
- python-pptx
- vsnprintf和snprintf(vsnprintf就是为了支持va_list,实现对于sprint功能封装而做的)
- linux下查看指定进程的所有连接信息(转)
- 使用idea创建第一个springboot项目
- leetcode 542. 01 Matrix 、663. Walls and Gates(lintcode) 、773. Sliding Puzzle 、803. Shortest Distance from All Buildings
- angular ts处理日期格式
- sorry, unimplemented: non-trivial designated initializers not supported