Hangfire是一款后台开发框架,如果您需要设计后台任务就可以使用这款框架快速编辑各种任务内容,您可以快速部署后台工作的任务,可以部署长期监控的任务,可以部署短期运行的任务,可以设置各种任务循环执行,使用框架内容就可以创建新的任务,可以直接复制代码到当前的任务中使用,支持在指定的CRON
计划中多次触发重复作业,支持后台进程长期运行,可以在应用程序的整个生命周期内连续运行后台进程,每种任务的运行方式都可以直接在软件上添加控制方案,任务执行的数据可以在软件显示统计内容,可以在图表查看进程运行情况,运行成功、失败、队列任务等内容都可以在后台监控。
Hangfire 是一个开源框架,可帮助您创建、处理和管理后台作业,即您不想放入请求处理管道的操作:
群发通知/通讯;
从 xml、csv、json 批量导入;
创建档案;
发射网络钩子;
删除用户;
构建不同的图表;
图像/视频处理;
清除临时文件;
定期自动报告;
数据库维护。
多种类型的后台作业
Hangfire 支持多种后台任务——短期和长期运行、CPU 密集型和 I/O 密集型、一次性和循环。您无需重新发明轮子——它已准备好使用。
随时随地处理作业
默认情况下,作业处理是在 ASP.NET 应用程序中进行的。但是您可以在控制台应用程序、Windows 服务或其他任何地方处理作业
以持久存储为后盾
后台作业是应用程序中非常重要的一部分,Hangfire 确保任何作业至少执行一次。为了在应用程序重新启动之间保留后台作业信息,所有信息都保存在您最喜欢的持久存储中。目前官方支持以下存储:
Redis
In-Memory (preview)
存储子系统被抽象到足以支持 RDBMS 和 NoSQL 解决方案。如果您最喜欢的事务数据库系统尚不支持,则可以将其支持作为扩展来实现。
自动重试
如果您的方法遇到暂时性异常,请不要担心——它会在几秒钟内自动重试。如果所有重试尝试都用尽,您可以从集成的 Web 界面手动重新启动它。
如果您的后台作业在执行过程中遇到问题,它会在延迟一段时间后自动重试。Hangfire 成功处理了以下问题:
例外
应用程序关闭
意外的进程终止
您还可以通过编程代码或仪表板 UI 手动重试任何后台作业
随着您的成长而扩展
您无需做出任何架构决定即可开始使用 Hangfire。您可以从简单的设置开始,在 Web 应用程序端实现后台处理。
之后,当你遇到性能问题时,你可以在不同的进程或服务器之间分离处理——Hangfire 使用分布式锁来处理同步问题。
集成监控界面
Hangfire 附带了一个很棒的工具——Web Monitoring UI。它作为 OWIN 扩展实现,可以托管在任何应用程序中——ASP.NET、控制台或 Windows 服务。监控 UI 允许您查看和控制后台作业处理的任何方面,包括统计信息、异常和后台作业历史记录。
只要看看下面的截图,你就会爱上它!
SQL Server 和 Redis 支持
Hangfire 使用持久存储来存储作业、队列和统计信息,并让它们在应用程序重新启动后仍然存在。存储子系统被抽象到足以支持经典 SQL Server 和快速 Redis。
SQL Server 提供简化的安装以及常规维护计划。
Redis 提供了惊人的速度,尤其是与 SQL Server 相比,但需要额外的知识。
保证处理
Hangfire 是在知道托管环境可以杀死每行上的所有线程的情况下制作的。因此,它在成功完成之前不会删除作业,并且包含不同的隐式重试逻辑以在其处理中止时执行该作业。
日志记录
Hangfire 使用 Common.Logging 库来记录它的所有事件。它是一个通用库,您可以使用适配器将其插入您的日志框架。
多个 Hangfire 实例
您可以在相同或不同的机器上运行多个 Hangfire 实例。它使用分布式锁定来防止竞争条件。每个 Hangfire 实例都是冗余的,您可以无缝地添加或删除实例(但控制它们侦听的队列)。
多队列处理
Hangfire 可以处理多个队列。如果您想优先处理您的工作或在您的服务器之间拆分处理(一些处理存档队列,其他处理图像队列等),您可以告诉 Hangfire 您的决定。
Hangfire.Pro.Redis
Hangfire Pro 附带Hangfire.Pro.Redis使用Redis服务器来持久化后台作业和其他数据的软件包。
Redis 以其出色的性能而闻名,这里是 Hangfire.SqlServer 和 Hangfire.Redis 存储之间的相对比较结果。
Hangfire.Pro.PerformanceCounters
Hangfire.Pro.PerformanceCounters软件包允许 Hangfire 将其内部指标发布到 Windows 性能计数器——这是监控 Windows 应用程序和服务的标准方法。
因此,您可以使用Nagios、New Relic、Server Density等现有工具来主动监控服务的运行状况。
基于队列的处理
与其同步调用一个方法,不如将它放在一个持久队列上,Hangfire 工作线程将接受它并在自己的执行上下文中执行:
BackgroundJob.Enqueue(() => Console.WriteLine("Hello, world!"));
此方法在存储中创建一个作业并立即将控制权返回给调用者。Hangfire 保证即使宿主进程异常终止后也会调用指定的方法。
延迟方法调用
您可以将其执行推迟指定时间,而不是立即调用方法:
BackgroundJob.Schedule(() => Console.WriteLine("Hello, world!"), TimeSpan.FromMinutes(5));
此调用还保存作业,但不是将其放入队列,而是将作业添加到持久计划中。当给定时间过去后,作业将被添加到其队列中。同时,您可以重新启动您的应用程序——它无论如何都会被执行。
重复任务
重复性工作处理从未如此简单。您只需要一行代码:
RecurringJob.AddOrUpdate("easyjob", () => Console.Write("Easy!"), Cron.Daily);
Hangfire 使用Cronos库来执行调度任务,因此您可以使用更复杂的 CRON 表达式:
RecurringJob.AddOrUpdate("powerfuljob", () => Console.Write("Powerful!"), "0 12 * */2");
编程工具 /
下载编程工具 /
下载编程工具 /
下载编程工具 /
下载编程工具 /
下载编程工具 /
下载编程工具 /
下载编程工具 /
下载编程工具 /
下载编程工具 /
下载
网友评论