Hangfire实战一

Hangfire:一个开源的任务调度框架

开发环境:VS2017,SQL Server 2012,.NET Framework 4.5

项目类型:控制台应用程序

1.在vs的程序包控制台中为项目添加Hangfire支持

PM>Install-Package Hangfire

2.配置sql server连接

GlobalConfiguration.Configuration.UseColouredConsoleLogProvider().UseSqlServerStorage("Data Source=127.0.0.1;User ID=sa;Password=XXXX;Initial Catalog=Hangfire;Connection Reset=False;");

3.创建基本任务

Hangfire中的任务类型大致有4种类,如图:

任务类别 任务描述 基本语法
Fire-and-forget 将当前任务放入到一个持久化的队列中,以便程序可以继续执行 BackgroundJob.Enqueue
Delayed 任务在未来的一个时间点执行 BackgroundJob.Schedule
Recurring 可重复执行的任务 RecurringJob.AddOrUpdate
Continuations 将多个任务连接成类似工作流的形式顺序执行 BackgroundJob.ContinueWith

4.创建任务代码参考:

using (var server = new BackgroundJobServer()) {

//支持基于队列的任务处理:任务执行不是同步的,而是放到一个持久化队列中,以便马上把请求控制权返回给调用者

BackgroundJob.Enqueue(() => Console.WriteLine("Simple111"));

//延迟任务执行:不是马上调用方法,而是设定一个未来时间点再来执行。

BackgroundJob.Schedule(() => Console.WriteLine("Reliable!"), TimeSpan.FromSeconds(5));

//一行代码添加重复执行的任务,其内置了常见的时间循环模式,也可基于CRON表达式来设定复杂的模式。

RecurringJob.AddOrUpdate(() => Console.WriteLine("Transparent!"), Cron.Minutely);

//Continuations: Continuations allow you to define complex workflows by chaining multiple background jobs together.

var jobId = BackgroundJob.Enqueue(() => Test("========First job"));

BackgroundJob.ContinueWith(jobId, () => Test("========Start execute next task"));

Console.WriteLine("Hangfire Server started.Press any key to exit");

Console.ReadKey();

}

5.因为上述任务的存储是利用的Sql server实现,所以任务的运行信息都被保存在了SQL Server中,需要查看对任务的运行状态进行查看,Hangfire也提供了一个可视化的web界面(Dashboard)。查看过程如下:

1)创建一个ASP.NET项目

2)添加Hangfire支持

3)在项目中添加OWIN startup类,然后进行配置

4)启动网站项目,输入http://<your-site>/hangfire ,即可打开如下界面,对任务进行管理

Referenced:

http://www.cnblogs.com/ecin/p/6201262.html

时间: 2024-10-30 17:15:59

Hangfire实战一的相关文章

【转】Delphi+Halcon实战一:两行代码识别QR二维码

Delphi+Halcon实战一:两行代码识别QR二维码 感谢网友:绝代双椒( QQ:51536348)的支持 本文是绝代双椒的作品,因为最近在忙zw量化培训,和ziwang.com网站的升级,halcon没时间操作. 不过,随着国内产业升级,机器人行业的发展,Delphi+Halcon的未来,是无可限量的. 其他网友,有halcon这方面作品的,有需要,也可以交给zw转发. 另外,zw正在争取培训机构合作,开办Delphi+Halcon方面的培训的项目,有兴趣的机构可以联系QQ:3578117

Maven实战一:Maven的安装与配置

Maven实战一Maven的安装与配置 一安装Maven 检查JDK安装 下载Maven 本地安装 1解压 2设置环境变量 3升级Maven 二安装目录分析 M2_HOME m2 三设置HTTP代理 确认是否能够直接访问公共的Maven中央仓库 如果真的需要代理检查代理服务器是否畅通 编辑m2settingsxml 四Eclipse对Maven的支持 五Maven安装最佳实践 设置MAVEN_OPTS环境变量 配置用户范围settingsxml 不要使用IDE内嵌的Maven Maven实战一:

机器学习实战一(kNN)

机器学习实战一(kNN) 跟着老师做一个项目,关于行车记录仪识别前方车辆,并判断车距,不太好做.本来是用OpenCV,做着做着,突然发现需要补习一下机器学习的内容.<机器学习实战(machine learing in action)>这本书买了很久了,当时还是看了很多人推荐,不过到现在才想起翻出来看.第二章kNN的例子刚跟着做完,书里讲的很清楚,代码条理分明,只不过我是用Python3实现的.具体的过程不再赘述,只是把自己的理解放在这里. 先来看看书里第一章的部分. 机器学习就是把无序的数据转

zookeeper curator ( 实战一)

目录 zookeeper 的伪集群搭建 写在前面 1.1. zookeeper 安装&配置 1.1.1. 创建数据目录和日志目录: 1.1.2. 创建myid文件 1.1.3. 创建和修改配置文件 1.1.4. 配置文件实例 1.1.5. 修改启动命令 1.1.6. 启动伪集群 1.1.7. zk的客户端常用命令 写在最后 疯狂创客圈 亿级流量 高并发IM 实战 系列 zookeeper 的伪集群搭建 疯狂创客圈 Java 分布式聊天室[ 亿级流量]实战系列之 -22[ 博客园 总入口 ] 源码

数据-第19课-递归的应用实战一

第19课-递归的应用实战一 1. 递归的数学思想 (1)      递归是一种数学上分而自治的思想. (2)      递归将大型复杂问题转化为与原问题相同但规模较小的问题进行处理. (3)      递归需要有边界条件. l  当边界条件不满足时,递归继续进行. l  当边界条件满足时,递归停止. 2 . 递归的数学表示 n > 1 n==1 (1)斐波拉契数列递归解法 #include <stdio.h> int fibonacci(int n) { if( n > 1 ) {

Odoo实战一:空白模块创建

一:新建模块目录 我们在openerp-server.conf中配置了模块的存放路径,一般为  XXXX\odoo\addons 实际开发时,为了避免与odoo自带模块所混淆,我们一般把自己的模块放到其他文件夹去,甚至,放到odoo所在文件夹之外. 这里,我在odoo同级目录下,新建一个myodoo目录,用于存放我日后自己创建的模块们. 所以,修改openerp-server.conf,在addons_path后面加上路径: addons_path=F:\odoo\odoo-8.0\addons

Maven实战一

转载:http://www.iteye.com/topic/1123221 1. 用Maven 命令创建一个简单的Maven项目 在cmd中运行如下命令: Cmd代码 mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app-simple -Dversion=1.0 -DarchetypeArtifactId=maven-archetype-quickstart 即可在当前目录创建一个简单的maven项目,当然创

android smali代码注入 实战一

有同学在通服里面干活,最近一直忙着4g基站搭建的干活,测试设备(android)测量移动网络数据,没有自动保存记录的功能,只能手动记录各种测试参数,不知道测试软件供应商是怎样想的,竟然不提供的这样的功能! 要我帮忙把测试数据自动导入excel表格中,我硬着头皮去尝试下.网上有smali的语法和注入的介绍,但参考价值不大,分享下自己的smali注入的过程和心得(这里smali语法就不讲了). 案例 1.需求 需要提取数据界面如下: 提取数据字段信息: 地点address 小区识别码 cellId,

【实战】Docker 入门实战一

Docker是什么 Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源.Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低 从这个解释我们不知道大家有没有想到一个优点类似的东西,没错就是 Vagrant :  vagrant打造跨平台可移动的开发环境   ,那么