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:

Hangfire实战(一)------Hangfire+SQL Server实现简单的任务调度的更多相关文章

  1. SQL Server里简单参数化的痛苦

    在今天的文章里,我想谈下对于即席SQL语句(ad-hoc SQL statements),SQL Server使用的简单参数化(Simple Parameterization)的一些特性和副作用.首先 ...

  2. 第三篇——第二部分——第一文 SQL Server镜像简单介绍

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/DBA_Huangzj/article/details/26951563 原文出处:http://bl ...

  3. 实战记录之SQL server报错手工注入

    前言 最近测试了一个站点,这个站点挺有意思,发现没有关闭错误提示,初步猜测是SQL server数据库,后来验证确实是.在这里记录一下实战过程,并详细讲解一下用到的知识点. SQL server报错注 ...

  4. Perl/C#连接Oracle/SQL Server和简单操作

    连接数据库是一个很常见也很必须的操作.先将我用到的总结一下. 1. Perl 连接数据库 Perl 连接数据库的思路都是: 1)使用DBI模块: 2)创建数据库连接句柄dbh: 3)利用dbh创建语句 ...

  5. Sql Server事务简单用法

    var conStr = "server=localhost;database=Data;user=sa;pwd=123456"; using (var connection = ...

  6. Sql Server Job 简单使用

    http://www.cnblogs.com/zerocc/p/3400529.html(转载) use msdb EXEC sp_add_job @job_name =   'tk_bakdata' ...

  7. Sql server注入简单认识

    登录界面常常会涉及到敏感关键字的注入 为了对应面试,再看一下 怎样防止注入, 可以过滤SQL需要参数中的敏感字符(忽略大小写) public static string Split(string in ...

  8. springmvc+mybatis+sql server实现简单登录功能

    一.源码: 1.Users.java package com.login.entity; import java.io.Serializable; public class Users impleme ...

  9. sql server存储过程简单的使用

    --创建存储过程 create proc test_proc @date datetime as select * from t_user where times between ),),),),' ...

随机推荐

  1. matlab之指派问题(整数规划)

    1 c=[ ; ; ; ]; c=c(:);%将矩阵C按列拉直,然后赋给C,例如矩阵C=[,,;,,],操作完后就是列向量1,,,,, a=zeros(,); for i=: a(i,(i-)*+:* ...

  2. Tensorflow从0到1(3)之实战传统机器算法

    计算图中的操作 import numpy as np import tensorflow as tf sess = tf.Session() x_vals = np.array([1., 3., 5. ...

  3. 一篇文章教会你使用Python定时抓取微博评论

    [Part1--理论篇] 试想一个问题,如果我们要抓取某个微博大V微博的评论数据,应该怎么实现呢?最简单的做法就是找到微博评论数据接口,然后通过改变参数来获取最新数据并保存.首先从微博api寻找抓取评 ...

  4. 基于 abp vNext 和 .NET Core 开发博客项目 - 终结篇之发布项目

    系列文章 基于 abp vNext 和 .NET Core 开发博客项目 - 使用 abp cli 搭建项目 基于 abp vNext 和 .NET Core 开发博客项目 - 给项目瘦身,让它跑起来 ...

  5. Jenkins项目构建运行

    [准备环境] 继Jenkins环境搭建完成后,进行插件的管理 [思路] 项目顺序是,开发提交代码到代码仓库,测试通过Jenkins拉下开发的代码打包部署: 1.开发提交代码 2.Jenkins自动从代 ...

  6. 一文梳理JavaScript中的this

    最近零零碎碎看了许多关于this的文章,本着"好记性不如烂笔头"的思想,特在这里整理一下this有关的知识点.[长文警告!!!] 接下来,笔者将按照以下目录对this进行阐述: t ...

  7. 黎活明8天快速掌握android视频教程--14_把文件存放在SDCard

    把文件保存在手机的内部存储空间中 1 首先必须在清单文件中添加权限 <?xml version="1.0" encoding="utf-8"?> & ...

  8. 08.利用Easymock测试简单的servlet

    1.首先导入需要使用的servlet的jar包 接下来我们编写一个登陆的servlet package com.fjnu.service; import java.net.HttpRetryExcep ...

  9. js基础练习题(3)

    8.this 1.举例说说apply方法和call方法的作用和区别 2.读下面代码,写程序结果 function identify () { return this.name.toUpperCase( ...

  10. vscode 配置 c++ 环境

    vscode 配置 c++ 环境 参考的这篇bloghttps://blog.csdn.net/bat67/article/details/81268581 1.安装编译器.这里安装 codebloc ...