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. 微信小程序-Q爱天气

    最近找工作,发现微信小程序横行无忌,所以花两天时间把之前的一个天气小demo捡起来,重新上线发布一下.明天更新出小程序的讲解教程.

  2. DML_Data Modification_DELETE

    DML_Data Modification_Delete删除记录比较简单,但是需要特别注意,一不小心,就变成了 “从删库到跑路“ 就掉的大了 /* Microsoft SQL Server 2008 ...

  3. .Net Core Configuration Etcd数据源

    前言     .Net Core为我们提供了一套强大的Configuration配置系统,使用简单扩展性强.通过这套配置系统我们可以将Json.Xml.Ini等数据源加载到程序中,也可以自己扩展其他形 ...

  4. demo项目开发(Python+flask+mysql+redis只包含后端接口)

    [demo项目开发需求] 用户信息管理,可以注册.登录.添加用户.删除用户 注册:任何用户可以注册,对用户提交的注册信息进行校验,返回对应的信息,其中: 用户名:必填,唯一 密码:必填,只能6-12位 ...

  5. 挖洞入门_显错型SQL注入

    简介:在漏洞盒子挖洞已经有一段时间了,虽说还不是大佬,但技术也有所进步,安全行业就是这样,只有自己动手去做,才能将理论的知识变为个人的经验.本篇文章打算分享一下我在挖显错型SQL注入漏洞过程中的一些个 ...

  6. 容器中的Java堆大小调整:快速,轻松

    在上一篇博客中,我们已经看到Java进行了改进,可以根据正在运行的环境(即物理机或容器(码头工人))识别内存.java的最初问题是,它无法弄清楚它是否在容器中运行,并且它曾经为容器运行所在的整个硬件捕 ...

  7. Windows安装C的编译环境

    对于java开发者来说安装C的编译环境不是非常熟悉,因此本文对C的安装环境进行介绍以及windows编译Redis和Zookeeper的过程.MinGW主要用于按照gcc.make等环境,cywin用 ...

  8. JavaWeb网上图书商城完整项目--验证码

    1.首先需要集成下面的jar 2.在web.xml配置验证码的servlet <?xml version="1.0" encoding="UTF-8"?& ...

  9. Shell 脚本学习(1)

    一 Shell概览 1. 自动化批量系统初始化程序(update, 软件安装,时区设置,安全策略,...) 2. 自动化批量软件部署程序(LAMP,LNMP,Tomcat,LVS,Nginx) 3. ...

  10. Validate日期校验

    public class Validate { private static Regex RegNumber = new Regex("^[0-9]+$"); private st ...