Hangfire 执行后台任务工具

程序名称:Hangfire

授权协议: GPL

操作系统: 跨平台

开发语言: C#

Hangfire 介绍

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

Hangfire 官网

http://hangfire.io/

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


提到 EclEmma 首先就要说到著名的 Java 覆盖测试工具Emma。从某种程度上说,EclEmma 可以看作是 Emma 的一个图形界面。
Solex是一个WEB应用测试用的Eclipse插件。Solex可以简化对WEB应用的测试操作。它发布在Apache Software
Apache为我们提供了一个强大的工具 Cactus!它是一套简单,易于使用的服务器端测试框架,可以使开发人员很轻松的测试服务器端的程序,他们会说:”哦,就是这么简单”。Cactus是
Google C Testing Framework是Google公司用来在各种不同平台上编写C测试代码的框架。
JdbcProxy 是 SourceForge 上一个开源的 Java 项目,用 Java 语言编写,遵循 LGPL 和 MPL1.1 协议,由 Frans
Ripplet是一款负载测试工具,特征如下: 1)基于Apache License 2.0许可证; 2)软件程序性能和负载测试工具;
Memtest86+ 是一款免费开源的内存测试软件,测试准确度比较高,内存的隐性问题也能检查出来!也是一款基于Linux核心的测试程序.
Winpdb是一款非常受python开发者欢迎的高级debugger工具。支持只能断点、多线程、名称空间修改、加密通讯等高级特性。
Selenium (SeleniumHQ) 是 thoughtworks公司的一个集成测试的强大工具。 一、Selenium 的版本
Flexcover是一个针对Flex、AIR和AS3的开源代码覆盖率工具套件。 Flexcover的设计主要出于以下目的:
Architecture Rules是一个开源java库,通过它断言你的架构。Architecture Rules通 过一个xml配置文件和一个可选的程序配置文件通过集成测试(unit
Tsung 是一个压力测试工具,可以测试包括HTTP, WebDAV,PostgreSQL,MySQL, LDAP, and XMPP/Jabber等服务器。针对 HTTP
JDebugTool 是一个独立的图形化的Java调试器,基于 JPDA (Java Platform Debugger Architecture)
Sahi 是一个用于Web应用程序的自动测试工具。 Sahi 运行为一个代理服务器,必须把浏览器的代理设置为 Sahi 服务器。然后Sahi 注入javascript来访问Web页面中的元素。
UnitTH is a simple, easy to use Open Source software application for generating historical test reports from JUnit test reports.
TestLink用于进行测试过程中的管理,通过使用TestLink提供的功能,可以将测试过程从测试需求、测试设计、到测试执行完整的管理起来,同时,它还提供了好多种测试结果的统计和分析,使我们能够简单的开始测试工作和
Metasploit Framework是一个编写,测试和使用exploit代码的完善环境。这个环境为渗透测试,shellcode编写和漏洞研究
JSystem 是一个开源的系统自动测试框架,包含以下的组件: 1. Services Java API - exposes JSystem services
Jester 是一个 JUnit 测试的测试器,擅长发现测试套件的问题,并提供对代码基本结构的深入观察。
PolePosition 是一个开源的数据库性能测试工具。 下图是该工具测试完成后生成的报表