任务调度是我们项目中常见的功能,虽然任务调度的功能实现本身并不难,但一个好用的轮子还是可以给我们的开发的效率提升不少的。

在.net环境中,较为有名的任务调度框架是HangFire与Quartz.NET,本文这里主要介绍Hangfire,相比Quartz.NET来说,它提供了更加友好的页面,使用起来更加方便。Hangfire的优点网上有不少文章介绍的,这里简单的列举一下:

支持各种常见的任务类型

持久化保存任务、队列、统计信息

重试机制

多语言支持

支持任务取消

支持按指定Job Queue处理任务

服务器端工作线程可控,即job执行并发数控制

分布式部署,支持高可用

良好的扩展性,如支持IOC、Hangfire Dashboard授权控制、Asp.net Core、持久化存储等

简单使用:

这里就简单的演示.net core下基本的用法。首先建立一个.net core 的web项目,如果没有别的需求使用空项目模板也可以。

1. 添加程序包:

Install-Package Hangfire

2. 配置数据库:

Hangfire默认支持sqlserver和redis,也可以通过第三方扩展支持sqlite等数据库。这里我选择的是常用的sqlserver。

使用sqlserver作为存储引擎时,首先需要在sqlserver上创建一个数据库,可以不用建表,Hangfire会自动建表。

3. 注册服务:

首先在Startup.cs的ConfigureServices 方法中注册服务:

services.AddHangfire(r => r.UseSqlServerStorage("Data Source=192.168.18.130;Initial Catalog=HangfireDemo;User ID=sa;Password=abc123@ss"));

然后在Configure 方法中加入HangfireServer及HangfireDashboard:

app.UseHangfireServer();

app.UseHangfireDashboard();

4. 配置任务

Hangfire提供了一系列接口配置任务:

//基于队列的任务处理(Fire-and-forget jobs)

var jobId = BackgroundJob.Enqueue(

() => Console.WriteLine("Fire-and-forget!"));

//延迟任务执行(Delayed jobs)

var jobId = BackgroundJob.Schedule(

() => Console.WriteLine("Delayed!"),

TimeSpan.FromDays());

//定时任务执行(Recurring jobs)

RecurringJob.AddOrUpdate(

() => Console.WriteLine("Recurring!"),

Cron.Daily);

//延续性任务执行(Continuations)

RecurringJob.AddOrUpdate(

() => Console.WriteLine("Recurring!"),

Cron.Daily);

这些任务是配置在服务器上的,如果要动态配置任务则可以通过让服务器提供接口即可。

缺点

最后也简单的说下Hangfire的缺点吧,另一个比较热门的任务调度框架是Quartz.net,它和Hangfire相比有如下优点:

支持秒级单位的定时任务处理,但是Hangfire只能支持分钟及以上的定时任务处理

更加复杂的触发器,日历以及任务调度处理

可配置的定时任务

其中Hangfire最大的缺点可能是第一条,任务执行时间精度不够,不过在大部分应用场景来说,这个不是很大的问题。

参考文章

本文这里只是简单的入门,如果想要更多的了解可以参考下如下文章

任务调度框架FluentScheduler简介

之前我在文章中介绍过.net中的任务调度框架Hangfire,HangFire虽然本身输入比较简单好用的,但是,如果我们的程序本身提供的服务不是任务调度,而任务调度只是里面并不重要的小功能的时候,用H ...

开源的.NET任务调度框架-HangFire

什么是Hangfire Hangfire 是一个开源的.NET任务调度框架,目前1.6+版本已支持.NET Core.内置提供集成化的控制台,方便后台查看及监控: 另外,Hangfire包含三大核心组 ...

.NET Core下开源任务调度框架Hangfire的Api任务拓展(支持秒级任务)

HangFire的拓展和使用 看了很多博客,小白第一次写博客. 最近由于之前的任务调度框架总出现问题,因此想寻找一个替代品,之前使用的是Quartz.Net,这个框架方便之处就是支持cron表达式适合 ...

.NET Core下开源任务调度框架Hangfire

今天无意中发现了一个很好用的任务调度框架.Hangfire作为一款高人气且容易上手的分布式后台执行服务,支持多种数据库.在 .net core的环境中,由Core自带的DI管理着生命周期. 相较于qu ...

【niubi-job——一个分布式的任务调度框架】----niubi-job这下更牛逼了!

niubi-job迎来第一次重大优化 niubi-job是一款专门针对定时任务所设计的分布式任务调度框架,它可以进行动态发布任务,并且有超高的可用性保证. 有多少人半夜被叫起来查BUG,结果差到最后发 ...

【niubi-job——一个分布式的任务调度框架】----安装教程

niubi-job是什么 niubi-job是LZ耗时三个星期,费尽心血打造的一个具备高可靠性以及水平扩展能力的分布式任务调度框架,采用quartz作为底层的任务调度管理器,zookeeper做集群的 ...

Quarzt.NET 任务调度框架

Quartz.NET是一个开源的作业调度框架,是 OpenSymphony 的 Quartz API 的.NET移植,它用C#写成,可用于winform和asp.net应用中.它提供了巨大的灵活性 ...

Quartz.Net任务调度框架

Quartz.Net是一个开源的任务调度框架,非常强大,能够通过简单的配置帮助我们定时具体的操作. 相对于我们用的线程里面while(true)然后sleep来执行某个操作,应该算的上是高端,大气,上 ...

DWZ富客户端框架+DWZ简介及其使用+DWZ讨论组

DWZ富客户端框架+DWZ简介及其使用+DWZ讨论组 地址: DWZ富客户端框架:http://jui.org/#_blank DWZ简介及其使用:http://blog.sina.com.cn/s/ ...

随机推荐

Yeelink 初探

Yeelink可以作为中转服务器使用,在自己没有服务器的情况下,可以利用它传输自己的数据. 首先去申请一个帐号,然后添加一个设备. http://www.yeelink.net/user 在这里是用户 ...

window.showModalDialog返回值和window.open返回值实例详解

最近在谷歌浏览器下发现一个问题,就是使用谷歌浏览器已经不兼容window.showModalDialog了,所以还是改成使用window.open(). 一.window.showModalDialo ...

windows phone Datepicker Timepicker

选择程序包管理器控制台 在PM后输入Install-Package WPtoolkit可自动下载 PM> Install-Package WPtoolkit 在xaml中添加引用 xmlns:t ...

DIV的摇晃效果---jquery实现

DIV的摇晃效果---jquery实现 quo ...

Volly框架的使用基础版及使用中的一些坑 Ace 网络篇(三)

直接把注释粘过来: * Volley使用讲解: * 要实现网络数据请求主要要记住下面三步骤: * 1.创建RequestQueue对象 * 2.创建XXRequest对象(XX代表String,JSO ...

sql语句 面试题

ql语句 面试题   自动编号   学号   姓名 课程编号 课程名称 分数 1        2005001  张三  0001      数学    69 2        2005002  李四 ...

OpenGL 茶壶

void MyRenderer::Init_Teapot_VBO() { m_fun->glGenBuffers(, &m_teapot_vbo); m_fun->glBindBu ...

Ajax 基础笔记

Ajax内容: 同步交互与异步交互 同步交互:客户端向服务器端发送请求,服务器端向客户端进行响应,这个过程中客户端不能做其他事情 异步交互:客户端向服务器端发送请求,服务器端向客户端进行响应,这个过程 ...

hdu-3071 Gcd & Lcm game---质因数分解+状态压缩+线段树

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=3071 题目大意: 给定一个长度为n的序列m次操作,操作的种类一共有三种 查询 L :查询一个区间的所 ...

Windows Server(r12) - 配置 MySQL 远程访问

Windows Server(r12) - 配置 MySQL 远程访问 工作主要为两部分, 一部分是 Windows 防火墙, 一部分是 MySQL 自身 Windows 端口远程访问 其实就是在 W ...

linux任务调度框架,任务调度框架Hangfire 简介相关推荐

  1. Linux内核4.14版本——drm框架分析(1)——drm简介

    目录 1. DRM简介(Direct Rendering Manager) 1.1 DRM发展历史 1.2 DRM架构对比FB架构优势 1.3 DRM图形显示框架 1.4 DRM图形显示框架涉及元素 ...

  2. php cli python,PHP MVC框架 CodeIgniter CLI模式简介

    PHP MVC框架 CodeIgniter CLI模式简介 分类:PHP_Python| 发布:佚名| 查看: | 发表时间:2014/7/25 让我们以Hello World为例,首先创建一个简单的 ...

  3. Linux MMC原理及框架详解

    目录 1. 背景 1.1基本概念 1.2 规范简介 1.2.1 卡的规范 1.2.2 总线规范 2. eMMC原理介绍 2.1 eMMC内部结构简介 2.1.2 Flash Controller 2. ...

  4. Linux内核 LCD 驱动程序框架

    Linux 内核 LCD 驱动程序框架 1. framebuffer 简介 1.1 什么是 framebuffer 1.2 framebuffer的作用 2. framebuffer 驱动的框架 3. ...

  5. DL框架之DL4J/Deeplearning4j:深度学习框架DL4J/Deeplearning4j的简介、安装、使用方法之详细攻略

    DL框架之DL4J/Deeplearning4j:深度学习框架DL4J/Deeplearning4j的简介.安装.使用方法之详细攻略 目录 深度学习框架Deeplearning4j的简介 1.Deep ...

  6. 【OkHttp】OkHttp 简介 ( OkHttp 框架特性 | Http 版本简介 )

    OkHttp 系列文章目录 [OkHttp]OkHttp 简介 ( OkHttp 框架特性 | Http 版本简介 ) 文章目录 OkHttp 系列文章目录 一.OkHttp 简介 二.Http 版本 ...

  7. DL框架之Caffe:深度学习框架之Caffe的简介、安装、使用方法详细攻略

    DL框架之Caffe:深度学习框架之Caffe的简介.安装.使用方法详细攻略 目录 Caffe的简介 Caffe的安装 Caffe的使用方法 1.基本函数 ​ Caffe的简介 全称Convoluti ...

  8. DL框架之AutoKeras框架:深度学习框架AutoKeras框架的简介、特点、安装、使用方法详细攻略

    DL框架之AutoKeras框架:深度学习框架AutoKeras框架的简介.特点.安装.使用方法详细攻略 Paper:<Efficient Neural Architecture Search ...

  9. DL框架之Keras:深度学习框架Keras框架的简介、安装(Python库)、相关概念、Keras模型使用、使用方法之详细攻略

    DL框架之Keras:深度学习框架Keras框架的简介.安装(Python库).相关概念.Keras模型使用.使用方法之详细攻略 目录 Keras的简介 1.Keras的特点 2.Keras四大特性 ...

最新文章

  1. 电脑能连蓝牙耳机吗_安卓手机延迟最低的蓝牙耳机有吗?超低延迟蓝牙耳机推荐...
  2. 详解如何充分发挥先验信息优势,用MRC框架解决各类NLP任务
  3. 吐槽贴:用ELECTRA、ALBERT之前,你真的了解它们吗?
  4. 帆软独家:数字化转型打造企业数据战斗力
  5. 市场活动课件:SQL Server 索引优化
  6. VS2010下配置使用OpenGL的glut库
  7. 点对点借贷dApp Yield宣布流动性激励迁移至SushiSwap
  8. jQuery UI 实现 仿购物车功能 简洁的js
  9. ubuntu + pycharm + anaconda + pyqt5 + tools 配置
  10. C++ 虚函数表浅析
  11. 【渝粤教育】国家开放大学2018年春季 0605-22T中国古代文学(2) 参考试题
  12. 数据库, 数据仓库, 数据集市,数据湖,数据中台
  13. matlab车标识别,MATLAB车辆标识识别技术研究
  14. 深度学习实现代码汇总
  15. 风尚云网学习-vue-element-admin安装问题
  16. 阿帕奇服务器搭建网站,使用Apache搭建Web网站服务器
  17. RF(射频) - VSWR(电压驻波比)
  18. oracle中那个日期怎么相减_oracle日期相减
  19. LaTeX制作表格---学习笔记
  20. BF算法及KMP算法

热门文章

  1. 和平精英亚服服务器信号差,和平精英延迟高怎么办 网络卡顿解决方法
  2. FHE、MPC、zk-SNARK有何不同
  3. matlab 局部寻根,MATLAB算法の二分法全局寻根
  4. 2022中山大学计算机考研专硕初试经验分享
  5. kotlin List删除一个元素,添加一个元素
  6. 英语流利说 第25天
  7. 二级域名的创建、简单配置域名解析
  8. 使用Android studio 开发xposed插件
  9. html文件导入到u盘中,技术分享 - 编程实现U盘插入自动复制U盘内容到本地
  10. 蓝桥杯-打印菱形/字符串截断