TopShelf&Quartz.Net实现多任务的值守】的更多相关文章

很多时候,我们需要为一个服务器安装一堆的服务,来监控各种数据. 在windows服务器里,我们会部署专门的Quartz.Net多任务轮询服务. 同时,我们针对不同的任务制作专门的***Job.dll, 针对任务的Dll,考虑到升级问题,我们需要专门制作UpdateJob.dll来实现任务的业务逻辑的更新(.Net涉及到Appdomain的映射.复制和卸载):MarshalByRefObject 注:每次访问,都会有相应的Version信息带回,UPdateJob.dll只需要监视Version的…
背景 前段时间公司有个需求(每天给业务导出一批数据,以excel的形式通过邮件发送给他).A说:直接写个服务,判断等于某个时间点,执行一下sql语句,生成excel,写个EmaiHelper发送给他不就得了,这有什么麻烦的?B说:我了个亲娘来,还写服务呢?你还需要搞个timer去判断时间点?多费劲啊,直接写个控制台程序,添加个任务计划,不就搞定了吗?我只想说:你们都是大神,每次都不加点新的东西,还写什么代码,多么没劲啊,前两天看到了topshelf+quartz.net这个东东,可以做个练习了.…
.net core+topshelf+quartz创建windows定时任务服务 准备工作 创建.net core 控制台应用程序,这里不做过多介绍 添加TopShelf包:TopShelf: 添加Quartz包:Quartz.Quartz.Plugins: 添加依赖注入包:Microsoft.Extensions.DependencyInjection: 添加读取配置文件包:Microsoft.Extensions.Configuration.Json: 添加访问数据库包:Microsoft.…
在我们日常开发工作中,经常会运用到Quartz+Topshelf组件的组合来开发一些定时任务.那么在.Net Core下如何去使用呢?我自己尝试搭建了一个测试项目,过程中遇到了以下一些问题: Quartz 配置文件及版本问题.我们知道Quartz有2个配置文件,quartz.config和quartz.job.xml.前者负责组件初始化配置,后者负责job和triggle的配置.刚开始我是直接把framework下的配置文件直接拿过来用的,启动直接报错.主要问题在quartz.config qu…
Quartz.NET官网   TopShelf 网址 代码地址:https://github.com/SeaLee02/ProjectDemo/tree/master/WindowServerDemo ①新建一个控制台 WindowServerDemo ②下载nuget包 Topshelf Topshelf.Log4Net --附带 log4net Quartz Quartz.Jobs Quartz.Plugins --不然在获取的会报错StdSchedulerFactory.GetDefaul…
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:aop="http://www.springframework.org/schema/aop&q…
定义两个被调度的类 public class QuartzJob { public void work() { System.out.println(Spring Quartz的任务调度1被调用!"); //定时调用的业务逻辑 } } public class QuartzJob2 { public void work() { System.out.println(Spring Quartz的任务调度2被调用!"); //定时调用的业务逻辑 } } Spring的配置文件 <?x…
quartznet 上篇说到quartznet这个东东,topshelf+quartznet有很多不错的文章,可以查看七七同学的文章(http://www.cnblogs.com/jys509/p/4628926.html).这里我主要说说cron表达式,如果玩过linux下定时任务的肯定不陌生. 官方英文介绍地址:http://www.quartz-scheduler.net/documentation/quartz-2.x/tutorial/crontrigger.html cron exp…
Topshelf使用示例, HostFactory.Run(x => { x.Service<QuartzStartup>(s => { s.ConstructUsing(name => new QuartzStartup()); s.WhenStarted(tc => tc.Start()); s.WhenStopped(tc => tc.Stop()); }); x.RunAsLocalSystem(); x.StartAutomatically(); x.S…
转自 https://www.cnblogs.com/frozenzhang/archive/2016/04/29/5443778.html 1.创建控制台程序 2.添加引用 添加TopShelf的引用:TopShelf和TopShelf.Quartz 注:因为开发环境不一样,添加的版本会不同,即VS版本过低则无法安装最新的TopShelf 使用Nuget添加引用,默认添加的是最新的版本    或用命令行(可选择低版本): Install-Package Topshelf -Version In…
小记: 引用Quartz.Topshelf.Topshelf.Quartz 使用方法: http://www.cnblogs.com/mushroom/p/4952461.html http://www.cnblogs.com/jys509/p/4614975.html 任务调度: http://www.cnblogs.com/lzrabbit/archive/2012/04/14/2446942.html…
简介 虽然Quartz.NET被园子里的大神们写烂了,自己还是整理了一篇,结尾会附上源码地址. Quartz.NET是一款功能齐全的开源作业调度框架,小至的应用程序,大到企业系统都可以适用.Quartz是作者James House用JAVA语言编写的,而Quartz.NET是从Quartz移植过来的C#版本. 在一般企业,可以利用Quartz.Net框架做各种的定时任务,例如,数据迁移.跑报表等等. 另外还有一款Hangfire https://www.hangfire.io/,也是作业调度框架…
背景 之前一直有朋友问,.Net Core + Linux环境有没有类似Windows服务的东西.其实是有的,我了解的方法有两种: #1 创建一个ASP.Net Core的Web项目(如Web API),然后通过添加中间件(Middleware)的方式来启动任务: #2 创建一个.Net Core的项目,添加Host,Dependency Injection,Configuration等组件,然后通过Main方法或中间件的方式启动服务. 但是,上述两种方法都有点不足,如: #1 会把Web的生命…
官方配置 http://docs.topshelf-project.com/en/latest/configuration/config_api.html#service-start-modes topshelf 转载 2016年03月17日 13:45:13 标签: topshelf quartz 1015 topshelf和quartz topshelf和quartz内部分享 阅读目录: 介绍 基础用法 调试及安装 可选配置 多实例支持及相关资料 quartz.net 上月在公司内部的一次分…
接触Quartznet之前,老东家用的是总监自己写的分布式任务框架,好用但是配置麻烦,unity,一个微软容器,配置节点错一个,整个使用到unity文件的项目全部跑不起来,这后果真的受不了... 目前公司呢,没什么框架,全都是自己研究,自己找,合适的就用,独立自主,可是这样的方式真的好么,一个员工离职,或许他引进的东西别人要推翻重写,代价也不小..算了还是说下自己用到的东西吧.这里只是简单记录,有问题可以私信. 1.新建控制台项目,这里就叫DistributedService; 2.通过NuGe…
[转].NET(C#):浅谈程序集清单资源和RESX资源   目录 程序集清单资源 RESX资源文件 使用ResourceReader和ResourceSet解析二进制资源文件 使用ResourceManager解析二进制资源文件 小看RESX资源文件的Designer.cs文件 返回目录 程序集清单资源 在程序集中嵌入资源的最简单方法是什么?那就是使用Visual Studio中的“嵌入式资源(Embedded Resource)”创建选项,相当于使用csc的”/resource”参数.具体步…
Topshelf+Quatz.Net的简单使用 一  Topshelf概述 Topshelf是创建Windows服务的另一种方法,老外的一篇文章Create a .NET Windows Service in 5 steps with Topshelf通过5个步骤详细的介绍使用使用Topshelf创建Windows 服务.Topshelf是一个开源的跨平台的宿主服务框架,支持Windows和Mono,只需要几行代码就可以构建一个很方便使用的服务宿主. 二  Topshelf使用 1  新建Tim…
服务基础 安装管理员打开cmd cd C:\Windows\Microsoft.NET\Framework\v4.0.30319 InstallUtil.exe Path_WinSvc.exe 或者 将 InstallUtil.exe 直接拷贝到生成目录,运行 InstallUtil WinSvcName.exe 基础 原生实现 ServiceBase ServiceInstaller 问题梳理 在初始化安装时发生异常:System.BadImageFormatException: 未能加载文件…
目录 0. 背景说明 1. 使用Topshelf组件创建Windows服务 1.1 依赖Quartz.net实现定时任务 1.2 依赖于Topshelf创建服务类 1.3 log4net的配置文件log4net.config 1.4 主函数中配置服务信息 1.5 安装服务 3. Demo源码下载及参考文档 志铭-2021年12月13日 21:21:36 0. 背景说明 我为什么要创建windows服务?因为有一个操作需要我定时执行,这个操作可以是定时的数据同步或是周期性的某种操作 之前都是按照以…
项目总是很忙,忙里偷闲还是要总结一下,前一段时间,由于项目中需要,我们需要很多定时汇总数据的情况,项目初期主要使用sql server 计划任务实现对数据的汇总与统计,但是开发到一定时间内,需求提出了很多自动任务的功能,很多不是能够在SQL Server中进行解决的,例如订单关闭前多少分钟内发短信与邮箱告诉用户,程序层面每天汇总错误日志发送至运维邮箱等,针对目前情况,简单上网查了一下,决定使用TopShelf + Quartz 进行自动服务与任务调度,关于这两项的介绍也很多了,废话不多说,直接上…
Quartz.NET的使用(附源码)(作者 陈珙)   简介 虽然Quartz.NET被园子里的大神们写烂了,自己还是整理了一篇,结尾会附上源码地址. Quartz.NET是一款功能齐全的开源作业调度框架,小至的应用程序,大到企业系统都可以适用.Quartz是作者James House用JAVA语言编写的,而Quartz.NET是从Quartz移植过来的C#版本. 在一般企业,可以利用Quartz.Net框架做各种的定时任务,例如,数据迁移.跑报表等等. 另外还有一款Hangfire https…
阅读目录: 介绍 基础用法 调试及安装 可选配置 多实例支持及相关资料 quartz.net 上月在公司内部的一次分享,现把PPT及部分交流内容整理成博客. 介绍 topshelf是创建windows服务的一种方式,相比原生实现ServiceBase.Install.Installer更为简单方便, 我们只需要几行代码即可实现windows服务的开发.topshelf本身支持windows及linux下mono上部署安装,同样也是开源的. topshelf相对原生来说,调试起来比较方便,可以在开…
topshelf和quartz内部分享 阅读目录: 介绍 基础用法 调试及安装 可选配置 多实例支持及相关资料 quartz.net 上月在公司内部的一次分享,现把PPT及部分交流内容整理成博客. 介绍 topshelf是创建windows服务的一种方式,相比原生实现ServiceBase.Install.Installer更为简单方便, 我们只需要几行代码即可实现windows服务的开发.topshelf本身支持windows及linux下mono上部署安装,同样也是开源的. topshelf…
Ø  前言 本文主要记录子线程导致 Topshelf 和 Quartz.NET 的 Windows 服务停止的现象,以及使用几种常用子线程的注意事项.因为我们有时可能需要开启多个线程执行复杂的逻辑,如果某个子线发生了异常就导致服务停止了,那还怎么愉快的玩耍?! 1.   还是以之前使用 Quartz.NET 实现作业串行执行为例,我们模拟在"发送短信"和"发送邮件"中发生异常的情况,代码如下: 1)   首先修改 SendSMSJob 作业 /// <summ…
Ø  前言 之前一篇文章已经介绍了,如何使用 Topshelf 创建 Windows 服务.当时提到还缺少一个任务调度框架,就是 Quartz.NET.而本文就展开对 Quartz.NET 的研究,以及如何使用 Topshelf 结合 Quartz.NET 运行一个定时的 Windows 服务. Ø  本文主要内容 1.   搭建 Topshelf 的运行环境. 2.   编写一个存储过程,用于更新商品表中的库存. 3.   安装 Quartz 所需的 dll 文件. 4.   创建 Quart…
Quartz:首先我贴出来了两段代码(下方),可以看出,首先会根据配置文件(quartz.config),包装出一个Quartz.Core.QuartzScheduler instance,这是一个调度器,调度各个任务项(Jobs)的执行.这个调度器可以被Start.被Shutdown.被PauseAll.被ResumeAll,这对应 了windows服务的开启.停止.暂停.恢复.当启动服务,我就调用调度器的Start(),停止服务我就调用调度器的Shutdown()方法. namespace…
由于项目开发中经常会有定时任务执行的需求,所以会第一时间就想到 windows 服务 的方式,但是做过开发的同学都知道windows服务不利于调试,安装也麻烦: 并且有开源的作业框架Quartz.NET非常方便和好用,谁还愿意自己去写那些Timer定时器呢?既然选择用Quartz.NET,那怎么打包成一个Windows服务形式去运行呢? 那接下来就要引入Topshelf组件了. Topshelf的使用 请查看博文地址:http://www.cnblogs.com/jys509/p/4614975…
topshelf可以很简单方便的实现windows service服务,详见我的一篇博客的介绍 http://www.cnblogs.com/xiaopotian/articles/5428361.html Quartz.NET是一个开源的作业调度框架,非常适合在平时的工作中,定时轮询数据库同步,定时邮件通知,定时处理数据等. Quartz.NET允许开发人员根据时间间隔(或天)来调度作业.它实现了作业和触发器的多对多关系,还能把多个作业与不同的触发器关联.整合了 Quartz.NET的应用程序…
上一次写了一遍关于Quartz作业调度的文章 Quartz.NET 作业调度使用 现在使用TopShelf和Quartz实现windows服务作业调度 TopShelf版本4.0 Quartz版本3.0.6 任务文件和上次文章的一样将日期写入txt文件中,TimeJob代码如下 public class TimeJob : IJob { public Task Execute(IJobExecutionContext context) { string filePath = @"D:\\log.…
这周接受到一个新的需求:一天内分时间段定时轮询一个第三方WebAPI,并保存第三方WebAPI结果. 需求分析:分时段.定时开启.定时结束.轮询.主要工作集中在前三个上,轮询其实就是个Http请求,比较好解决. 技术选型: 1.最简单的方式:Windows Service.Timer.HttpClient. 2.B格高点的方式:Topshelf.Quartz.NET.HttpClient.之所以选用第二种方式的原因: 1.Windows Service尝试写了一个,发现附加进程调试确实麻烦,而且…