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. 曹工说Redis源码(8)--面试时,redis 内存淘汰总被问,但是总答不好

    文章导航 Redis源码系列的初衷,是帮助我们更好地理解Redis,更懂Redis,而怎么才能懂,光看是不够的,建议跟着下面的这一篇,把环境搭建起来,后续可以自己阅读源码,或者跟着我这边一起阅读.由于 ...

  2. Android中的SharedPreferences存储

    一.前言 不同于文件的存储方式,SharedPreferences是使用键值对的方式来存储数据的.也就是说,当保存一条数据的时候,需要给这条数据提供一个对应的键,这样在读取数据的时候就可以通过这个键把 ...

  3. pdb--Python调试器

    使用python编写程序,必然会遇见bug,而pdb就是python语言的一个好的debugger. 下面介绍pdb的使用方式 1. 单步执行代码,通过命令 python -m pdb xxx.py ...

  4. 技术周刊 · Lighthouse 测试报告生成

    登高远眺 天高地迥,觉宇宙之无穷 基础技术 Lighthouse 测试内幕 文章分享了网易云音乐前端性能监控平台使用 Lighthouse 的实践经验,介绍了 Lighthouse 的测试流程.内部模 ...

  5. HUD-Text插件使用方法

    插件的使用需要 1.HUDText PS:若存在在运行项目时出现了text(clone)而未有字体,点击该HUD的Text的Apply更新预制 由此可见,该插件时同过实例化预制的形式来实现打击浮字的 ...

  6. Cookie的简介与使用

    Cookie 历来指就着牛奶一起吃的点心.然而,在因特网内,"Cookie"这个字有了完全不同的意思.那么"Cookie"到底是什么呢?"Cookie ...

  7. 微信小程序for循环遍历

    wxml:           <block wx:for="{{data}}" wx:for-item="data">             & ...

  8. 多线程集成设计模式--future模式

    多线程开发可以更好的发挥多核cpu性能,常用的多线程设计模式有:Future.Master-Worker.Guard Susperionsion 一.什么是Future模型: 该模型是将异步请求和代理 ...

  9. Django REST Framework(一) Serializer和ModelSerializer

    REST Framework概述 Django REST framework是一套基于Django的REST框架,是一个用于构建Web API的功能强大且灵活的工具包. 1.RESTful 简述Rep ...

  10. 关于 urlencode 的使用和 json 模块的介绍

    先附上一段 “百度翻译” 的爬虫代码 # python爬虫实现百度翻译 # urllib和request POST参数提交 from urllib import request,parse impor ...