什么是Hangfire

Hangfire 是一个开源的.NET任务调度框架,目前1.6+版本已支持.NET Core。个人认为它最大特点在于内置提供集成化的控制台,方便后台查看及监控:

另外,Hangfire包含三大核心组件:客户端、持久化存储、服务端,官方的流程介绍图如下:

Hangfire基础

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

基于队列的任务处理是Hangfire中最常用的,客户端使用BackgroundJob类的静态方法Enqueue来调用,传入指定的方法(或是匿名函数),Job Queue等参数.

var jobId = BackgroundJob.Enqueue(() => Console.WriteLine("Fire-and-forget!"));

在任务被持久化到数据库之后,Hangfire服务端立即从数据库获取相关任务并装载到相应的Job Queue下,在没有异常的情况下仅处理一次,若发生异常,提供重试机制,异常及重试信息都会被记录到数据库中,通过Hangfire控制面板可以查看到这些信息。

延迟任务执行(Delayed jobs)

延迟(计划)任务跟队列任务相似,客户端调用时需要指定在一定时间间隔后调用:

var jobId = BackgroundJob.Schedule(() => Console.WriteLine("Delayed!"),TimeSpan.FromDays(7));

定时任务执行(Recurring jobs)

定时(循环)任务代表可以重复性执行多次,支持CRON表达式:

RecurringJob.AddOrUpdate(() => Console.WriteLine("Recurring!"),Cron.Daily);

延续性任务执行(Continuations)

延续性任务类似于.NET中的Task,可以在第一个任务执行完之后紧接着再次执行另外的任务:

BackgroundJob.ContinueWith(jobId,() => Console.WriteLine("Continuation!"));

其实还有批量任务处理,批量任务延续性处理(Batch Continuations),但这个需要商业授权及收费。在我看来,官方提供的开源版本已经基本够用。

hangfire 介绍(一)相关推荐

  1. 【SF】开源的.NET CORE 基础管理系统 -介绍篇

    [SF]开源的.NET CORE 基础管理系统 -系列导航 1.环境: .NET Core SDK (https://www.microsoft.com/net/core) SQL Server or ...

  2. 给Hangfire的webjob增加callback和动态判断返回结果功能设计

    背景介绍 通常业务中需要用到定时执行功能,我用hangfire搭建了一个调度服务,这个调度服务是独立于业务逻辑的,具体可以参考文章:https://github.com/yuzd/Hangfire.H ...

  3. Hangfire在ASP.NET CORE中的简单实现

    hangfire是执行后台任务的利器,具体请看官网介绍:https://www.hangfire.io/ 新建一个asp.net core mvc 项目 引入nuget包 Hangfire.AspNe ...

  4. Hangfire项目实践分享

    项目中使用Hangfire已经快一年了,期间经历过很多次的试错及升级优化,才达到现在的稳定效果.趁最近不是太忙,自己在github上做了个案列,也是拿来跟大家分享下,案例是从项目里剥离出来的,有兴趣的 ...

  5. hangfire.mysql.core_abp 使用 hangfire结合mysql

    abp 官方使用的hangfire 默认使用的是sqlserver的存储mysql 须要引入支持mysql的类库sql 我这边使用的是Hangfire.MySql.Core数据库 直接用nuget安装 ...

  6. Magicodes.Admin.Core开源框架总体介绍

    框架说明 Magicodes.Admin.Core框架在ABP以及ASP.NET ZERO的基础上进行了封装和完善,目前基于.NET Core 2.0+(Framework版本),由于部分组件在.NE ...

  7. abp 使用 hangfire结合mysql

    abp 官方使用的hangfire 默认使用的是sqlserver的存储 需要引入支持mysql的类库 我这边使用的是Hangfire.MySql.Core 直接用nuget安装即可 首先按照官方文档 ...

  8. 把执行结果转成json对象报错_给Hangfire的webjob增加callback和动态判断返回结果功能设计...

    背景介绍 通常业务中需要用到定时执行功能,我用hangfire搭建了一个调度服务,这个调度服务是独立于业务逻辑的,具体可以参考文章:https://github.com/yuzd/Hangfire.H ...

  9. abp moveto mysql_abp 使用 hangfire结合mysql

    abp 官方使用的hangfire 默认使用的是sqlserver的存储 需要引入支持mysql的类库 我这边使用的是Hangfire.MySql.Core 直接用nuget安装即可 首先按照官方文档 ...

最新文章

  1. tf.get_variable
  2. Android之如何优雅的管理ActionBar
  3. dart系列之:你的地盘你做主,使用Extension对类进行扩展
  4. java鼠标改变窗口大小监听事件_java – 当用户拖动鼠标时,监听JFrame调整事件大小?...
  5. 用python画出吉祥物
  6. 为什么企业宁愿花 15K 重新招人,也不愿意花 10K 留住老测试员?
  7. nginx报错The program 'nginx' can be found in the following packages
  8. GPCP全球月降水量数据下载与读取
  9. C语言一个数组中随机抽取5个数字
  10. linux转录组kegg注释,蛋白质组学KEGG注释详解
  11. php-fpm前台,php-fpm配置文件详解
  12. console.log也能插图!!!
  13. 程序员是做全栈工程师好?还是专注一个领域好?
  14. Justinmind恢复30天试用 For Mac
  15. 什么是Hadoop以及Hadoop集群
  16. 【webGoat】Path traversal
  17. Unity图片闪烁效果
  18. 家用计算机手抄报,大学计算机作业手抄报
  19. 浅谈“POODLE信息泄露漏洞”
  20. android 播放器 sma,SMA测评app

热门文章

  1. opencv 使用 GPU 加速
  2. 2016年7月17日学习 scratch 钢琴键
  3. Android 10 SystemUI 如何隐藏状态栏输入法图标
  4. 2023年云计算发展趋势会减缓吗?还能学习就业吗?
  5. 2019年读书记录及总结
  6. 线性回归实战---Abalone鲍鱼年龄预测
  7. MC我的世界模组-模拟城市-教程
  8. [张雨生][张雨生典藏合集22CD][APE/整轨/7.56 GB][旋风/快传]
  9. 【Verilog】马里奥小游戏的FPGA实现
  10. 2023最新SSM计算机毕业设计选题大全(附源码+LW)之java在线电影院售票系统5u8st