当前位置: 首页 > 软件库 > 开发工具 > .NET开发工具 >

Hangfire

执行后台任务工具
授权协议 LGPLv3
开发语言 C# HTML/CSS
所属分类 开发工具、 .NET开发工具
软件类型 开源软件
地区 不详
投 递 者 鲁文昌
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

Hangfire是一个开源且商业免费使用的工具函数库。可以让你非常容易地在ASP.NET应用(也可以不在ASP.NET应用)中执行多种类型的后台任务,而无需自行定制开发和管理基于Windows Service后台任务执行器。且任务信息可以被持久保存。内置提供集成化的控制台。

通过Nuget就可以在你的应用程序中安装Hangfire:Install-Package Hangfire

Hangfire的具有如下特性和特点:

  • 支持基于队列的任务处理:任务执行不是同步的,而是放到一个持久化队列中,以便马上把请求控制权返回给调用者。使用方法:BackgroundJob.Enqueue(() => Console.WriteLine("Simple!"));

  • 延迟任务执行:不是马上调用方法,而是设定一个未来时间点再来执行。使用方法:BackgroundJob.Schedule(() => Console.WriteLine("Reliable!"), TimeSpan.FromDays(7));

  • 循环任务执行:只需要简单的一行代码就可以添加重复执行的任务,其内置了常见的时间循环模式,也可以基于CRON表达式来设定复杂的模式。使用方法:RecurringJob.AddOrUpdate(() => Console.WriteLine("Transparent!"), Cron.Daily);

  • 持久化保存任务、队列、统计信息:默认使用SQL Server,也可以配合消息队列来降低队列处理延迟,或配置使用Redis来获得更好的性能表现

  • 内置自动重试机制:可以设定重试次数,还可以手动在控制台重启任务

  • 除了调用静态方法外还支持实例方法

  • 能够捕获多语言状态:即可以把调用者的Thread.CurrentCulture和Thread.CurrentUICulture信息同任务持久保存在一起,以便任务执行的时候多语言信息是一致的

  • 支持任务取消:使用CancellationToken这样的机制来处理任务取消逻辑

  • 支持IoC容器:目前支持Ninject和Autofac比较常用的开源IoC容器

  • 支持Web集群:可以在一台或多台机器上运行多个Hangfire实例以便实现冗余备份

  • 支持多队列:同一个Hangfire实例可以支持多个队列,以便更好的控制任务的执行方式

  • 并发级别的控制:默认是处理器数量的5倍工作行程,当然也可以自己设定

  • 具备很好的扩展性:有很多扩展点来控制持久存储方式、IoC容器支持等

为什么要使用Hangfire这样的函数库呢?我觉得好处有如下几个方面:

  1. 开发简单:无需自己额外做开发,就可以实现任务的队列执行、延迟执行和重复执行

  2. 部署简单:可以同主ASP.NET应用部署在一起,测试和维护都相对简单

  3. 迁移简单:由于宿主不仅限于ASP.NET,那么未来可以非常容易的把任务执行器放到其他地方(需要改变的就是在其他宿主中启动Hangfire服务器)

  4. 扩展简单:由于开源且有很多扩展点,在现有插件都不满足自己需要的情况下能够容易的进行扩展

之前我把Hangfire运用到两种情况下:

  1. 后台长时间的科学计算:这样就可以让请求马上返回给客户端,后台完成长时间计算后,用SignalR实时提醒用户

  2. 后台群发邮件:通过延迟和循环任务分批通过SendCloud这样的服务发送群发邮件

当然,Hangfire的应用场景还很多,比如在后台处理电商卖家的订单。 

转自:http://www.cnblogs.com/redmoon/p/4394962.html

  • 1.Hangfire是什么? Hangfire是一个后台作业执行服务组件,可以集成在ASP.NET、ASP.NET Core、控制台应用程序、Windows服务等。 2.Hangfire特点? (1)无需Windows服务或单独的进程。 (2)支持持久化存储,存储方式可支持sqlserver、redis,mongodb等。 (3)支持分布式作业处理 (4)支持自动维护 ,无需执行手动存储清理 -

  • 参考 开源分布式Job系统,调度与业务分离-如何创建一个计划HttpJob任务 转载于:https://www.cnblogs.com/taadis/p/hangfire.html

  • 1前言 最近把Python写的数据采集平台往.Net Core上迁移,原本的采集任务使用多进程+线程池的方式来加快采集速度,使用Celery作为异步任务队列兼具定时任务功能,这套东西用着还行,但反正就折腾嘛,直接上C#~ 本文记录 Hangfire 在实际应用里的用法,我发现网络上找到的大部分文章都是用 Hangfire 的异步任务输出个 Hello World,然后就没了。我实在不知道这样的文章

  • 基于 abp vNext 和 .NET Core 开发博客项目 - 集成Hangfire实现定时任务处理 转载于:https://github.com/Meowv/Blog 接下来,将完成一个任务调度中心,关于定时任务有多种处理方式,如果你的需求比较简单,比如就是单纯的过多少时间循环执行某个操作,可以直接使用.net core中内置的实现方式,新建一个类继承BackgroundService,实现

 相关资料
  • 7.2 ABP后台服务 - 集成Hangfire 7.2.1 简介 Hangfire是一个综合性的后台作业管理工具。你可以用Hangfire来替换ABP中默认实现的后台作业管理者。你可以对Hangfire使用相同的后台作业API。因此,你的代码将独立于Hangfire。但是,如果你喜欢,你也可以直接的使用 Hangfire 的API。 Hangfire的集成依赖于你所使用的框架。 7.2.2 AS

  • 问题内容: 我正在为我的学校创建一个应用程序,该应用程序应每n分钟检查一次网站上是否有新标记。为此,当用户首次登录时,实际标记的编号将保存在“ UserDefaults”中。当应用终止时,n分钟后,将重新计算标记的数量,并将其与前一个标记进行比较,并在更改数量时发送通知。 我想知道是否有一种方法可以执行此任务。我尝试在-applicationWillTerminate-中创建一个计时器,但只触发了

  • 是retfit方法已经是后台任务,还是应该在中调用此方法。在retfit官方文档中提到了在mainThread中执行的回调,但不清楚execute方法是否是后台任务。 改装文档:

  • 说明 在后台任务中,因为是运行在task进程,所以无法使用协程和协程客户端。如果你要操作数据库或Redis,一定要配置同步的连接池。 配置 项目配置文件中mainServer.configs.task_worker_num一定要配置为大于0,否则无法使用后台任务。 定义任务执行类 <?php namespace Test; use Imi\Task\TaskParam; use Imi\Task

  • 本文向大家介绍把后台任务调到前台执行使用什么命令?把停下的后台任务在后台执行起来用什么命令?相关面试题,主要包含被问及把后台任务调到前台执行使用什么命令?把停下的后台任务在后台执行起来用什么命令?时的应答技巧和注意事项,需要的朋友参考一下 答案: 把后台任务调到前台执行 fg 把停下的后台任务在后台执行起来 bg

  • 问题内容: 我有登录屏幕的GUI。每当我按下登录按钮时,都会对照在线mysql数据库中的输入检查用户名和密码,我正在通过登录按钮的actionPerformed()方法从数据库中提取所有这些信息。问题是程序正在从数据库中获取数据时, GUI冻结。我搜索了我的问题,发现我应该使用SwingWorker,但是作为一个新手,我没有获得如何使用SwingWorker的目的。 问题答案: 首先,在您的类中声

  • 问题内容: 我想知道哪种方法是在Java中实现某种后台任务的最有效方法(我想那将是某种非阻塞线程)。更准确地说- 我有一些Java代码,然后在某个时候需要执行长时间运行的操作。我想做的是在后台执行该操作,以便程序的其余部分可以继续执行,并且当该任务完成时,只需更新一些特定的对象即可。然后,其他组件将检测到此更改。 问题答案: 您应该使用线程池, http://java.sun.com/docs/b

  • 在本节中,我们会介绍Future和异步是如何调度的。如果您只想学习如何编写使用Future类型的高阶代码,并对Future类型的工作细节不感兴趣,您可以直接跳到async/await章节。但是,本章讨论的几个主题如:了解async/await的工作; async/await代码的 runtime 和性能属性,构建新的异步原语等,这些对运用异步代码都会有所帮助。如果您决定现在跳过此部分,则可能需要将