Quartz.net使用记录
1、引入dll文件:
nuget控制台:安装quartz:Install-Package Quartz
安装log4net:Install-Package log4net,这里使用log4net记录一些windows服务运行日志,以便查看。
安装完成,会添加4个引用,分别是:Quartz.dll、Common.Logging.dll、Common.Logging.Core.dll、log4net.dll。
2、log4net的相关配置:
config配置:非web项目是在app.config文件中,加入下面代码。注意:configSections节点必须放在最上面,否则会出现‘服务没有响应控制功能’错误,不能启动服务。
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>
<log4net debug="false">
<!-- OFF, FATAL, ERROR, WARN, INFO, DEBUG, ALL -->
<!-- Print only messages of level DEBUG or above in the packages -->
<logger name="ServiceLogger">
<level value="INFO" />
<appender-ref ref="SysAppender" />
</logger> <appender name="SysAppender" type="log4net.Appender.RollingFileAppender,log4net">
<param name="File" value="log/" />
<param name="AppendToFile" value="true" />
<param name="RollingStyle" value="Date" />
<param name="DatePattern" value=""Logs_"yyyyMMdd".txt"" />
<param name="StaticLogFileName" value="false" />
<layout type="log4net.Layout.PatternLayout,log4net">
<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />
<param name="Header" value=" ----------------------header-------------------------- " />
<param name="Footer" value=" ----------------------footer-------------------------- " />
</layout>
</appender>
</log4net>
非web项目在AssemblyInfo.cs加入(web项目一般在global文件中),log4net的加载配置:
//加载log4配置
[assembly:log4net.Config.XmlConfigurator()]
使用时先得到log对象:"ServiceLogger"是配置文件中的logger配置名。
log4net.ILog log = log4net.LogManager.GetLogger("ServiceLogger");
log.Info(DateTime.Now+":定时任务执行");
3、Quartz.Net的配置:
2个文件:quartz.config、quartz_jobs.xml,生成时要选择始终复制。
在线cron生成:http://cron.qqe2.com/
# You can configure your scheduler in either <quartz> configuration section
# or in quartz properties file
# Configuration section has precedence quartz.scheduler.instanceName = ServerScheduler # configure thread pool info
quartz.threadPool.type = Quartz.Simpl.SimpleThreadPool, Quartz
quartz.threadPool.threadCount =
quartz.threadPool.threadPriority = Normal # job initialization plugin handles our xml reading, without it defaults are used
quartz.plugin.xml.type = Quartz.Plugin.Xml.XMLSchedulingDataProcessorPlugin, Quartz
quartz.plugin.xml.fileNames = ~/quartz_jobs.xml # export this server to remoting context
quartz.scheduler.exporter.type = Quartz.Simpl.RemotingSchedulerExporter, Quartz
quartz.scheduler.exporter.port =
quartz.scheduler.exporter.bindName = QuartzScheduler
quartz.scheduler.exporter.channelType = tcp
quartz.scheduler.exporter.channelName = httpQuartz
<?xml version="1.0" encoding="utf-8" ?> <!-- This file contains job definitions in schema version 2.0 format --> <job-scheduling-data xmlns="http://quartznet.sourceforge.net/JobSchedulingData" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.0"> <processing-directives>
<overwrite-existing-data>true</overwrite-existing-data>
</processing-directives> <schedule> <job>
<name>Job</name>
<group>demoGroup</group>
<description>JobDemo服务描述</description>
<job-type>WinService.Job,WinService</job-type>
<durable>true</durable>
<recover>false</recover>
</job> <trigger>
<cron>
<name>JobTrigger</name>
<group>JobTriggerGroup</group>
<description>Trigger描述</description>
<job-name>Job</job-name>
<job-group>demoGroup</job-group>
<cron-expression>/ * * * * ?</cron-expression>
</cron>
</trigger>
</schedule>
</job-scheduling-data>
新建类,实现IJob接口,在Execute方法中写要定时执行的任务代码。
开始与关闭任务:这是在windows服务开始时,同时开始任务的执行。
public partial class ServiceQuartz : ServiceBase
{
private log4net.ILog log;
private ISchedulerFactory schedulerFactory;
private IScheduler scheduler;
public ServiceQuartz()
{
InitializeComponent();
log = log4net.LogManager.GetLogger("ServiceLogger");
schedulerFactory = new StdSchedulerFactory();
scheduler = schedulerFactory.GetScheduler();
} protected override void OnStart(string[] args)
{ log.Info("------------------定时任务已启动------------------------"+DateTime.Now);
scheduler.Start();
} protected override void OnStop()
{
log.Info("-------------------------定时任务被关闭了---------------"+DateTime.Now);
scheduler.Shutdown();
}
}
4、服务安装与卸载:
cmd要以管理员身份运行
安装:C:\Windows\Microsoft.NET\Framework64\v4.0.30319>InstallUtil.exe D:Project\QuartzTest\WinService\bin\Release\WinService.exe
卸载:sc delete servicequartz
Quartz.net使用记录的更多相关文章
- 【Quartz】问题记录注意事项【四】
记录一:queartz 在同时启动多个任务是,触发器名称不能设置一致,不然第二次启动会不成功 记录二:quartz 在使用任务与触发器分离写法时,任务必须要带(.StoreDurably()) IJo ...
- quartz的一些记录
定时任务总会遇到任务重叠执行的情况,比如一个任务1分钟执行一次,而任务的执行时间超过了1分钟,这样就会有两个相同任务并发执行了.有时候我们是允许这种情况的发生的,比如任务执行的代码是幂等的,而有时候我 ...
- Quartz 基本概念及原理
最近项目要用quartz,所以记录一下: 概念 Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使 ...
- Quartz-2D绘图之图形上下文详解
上一篇文章大概描述了下Quartz里面大体所包含的东西,但是对具体的细节实现以及如何调用相应API却没有讲.这篇文章就先讲讲图形上下文(Graphics Context)的具体操作. 所谓Graphi ...
- iPhone之Quartz 2D系列--图形上下文(2)(Graphics Contexts)
以下几遍关于Quartz 2D博文都是转载自:http://www.cocoachina.com/bbs/u.php?action=topic&uid=38018 iPhone之Quartz ...
- quartz 定时任务的实现
需求:项目中有一个任务,当时间到了会向移动端通过百度云推送推送信息,之前很傻叉的是写一个多线程一直扫描,每分钟扫描一次,比对当前时间和任务时间是否一样,结果把 项目跑死了,项目中用了一个简单的quar ...
- Quartz 2D - 图形上下文(Graphics Contexts)
一个Graphics Context表示一个绘制目标.它包含绘制系统用于完成绘制指令的绘制参数和设备相关信息.Graphics Context定义了基本的绘制属性,如颜色.裁减区域.线条宽度和样式信息 ...
- Quartz.NET学习系列
Quartz.NET它是一个开源的任务调度引擎,对于周期性任务,持久性任务提供了很好的支持,并且支持持久性.集群等功能. 这是什么对我来说Quartz.NET学习记录: 源代码下载http://yun ...
- Quartz 2D编程指南(2) - 图形上下文
一个Graphics Context表示一个绘制目标.它包含绘制系统用于完成绘制指令的绘制参数和设备相关信息.Graphics Context定义了基本的绘制属性,如颜色.裁减区域.线条宽度和样式信息 ...
随机推荐
- jQuery插件infinitescroll参数【无限翻页】
转自:http://blog.163.com/penglie_520/blog/static/19440505020127255319862/ infinite-scroll-jquery 参数详解: ...
- 脚本两则--用于快速部署HADOOP,SPARK这些(特别是VM虚拟机模板部署出来的)。。
感觉可能只是适合我自己的部署习惯吧,且只针对CENTOS6及以下版本,以后有时间,可能还是要改进.. 1,从VM的模块产生的虚拟机,如何快速搞定网络配置? #!/bin/bash #usage:./i ...
- sphinx coreseek SetSortMode(SPH_SORT_ATTR_ASC, '') 对float 排序设置bug
when I use SetSortMode(SPH_SORT_ATTR_ASC, 'floatVar'), it works unexpectedly. for example, I have a ...
- 树形dp-CF-337D. Book of Evil
题目链接: http://codeforces.com/problemset/problem/337/D 题目大意: 给一棵树,m个点,一个距离d,求有多少个点A,使得A到所有的m个点距离都不超过d. ...
- 【HDOJ】2604 Queuing
递推,推得f(n) = f(n-1) + f(n-3) + f(n-4).然后转换成矩阵相乘,如下f(n-1) f(n-2) f(n-3) f(n-4) * 1 1 0 0 ...
- 【转】探讨android更新UI的几种方法----不错
原文网址:http://www.cnblogs.com/wenjiang/p/3180324.html 作为IT新手,总以为只要有时间,有精力,什么东西都能做出来.这种念头我也有过,但很快就熄灭了,因 ...
- GCC依赖库顺序问题
今天在把linux下做的ipmsg移植到windows过程中,因为包含了一个开源库SimpleSocket,而这个库又引用了winsock2,没太注意就写下了下面的makefile: g++ -o t ...
- 【模拟】Codeforces 706A Beru-taxi
题目链接: http://codeforces.com/problemset/problem/706/A 题目大意: 家的坐标在sx,sy,有n辆车,每辆车坐标xi,yi,速度vi,问最快的一辆车什么 ...
- C# .NET开发Oracle数据库应用程序
.NET Framework访问Oracle数据库至少有两种方式,一种是利用微软提供的ADO.NET,另一种是利用Oracle提供的ODP.NET. 安装VS的时候会附带ADO.NET,安装Oracl ...
- Java学习日记-11 集合(1)
Collection接口集合中存储的只是对象的引用,不是对象本身. 1.ArrayList<E>类1.1ArrayList和Collection的关系 public interface L ...