Hangfire Pro 2022-08-31 update
Hangfire Pro 是一组扩展包,可提高性能并简化大型应用程序中后台作业处理的维护。Hangfire Pro 软件包可通过付费订阅获得。购买后,您会收到二进制文件、对私有 NuGet 源的访问权限以及 GitHub 上的私有存储库。
套餐
Hangfire.Pro
有限的存储支持
请注意,仅当使用Hangfire.SqlServer、Hangfire.Pro.Redis或Hangfire.InMemory包作为作业存储时,才正式支持 Hangfire.Pro 包。我们不能保证批次可以与其他存储一起正常工作,因为处理保证在很大程度上取决于具体的存储实现。
原子背景作业创建
批处理允许您以原子方式创建一堆后台作业。这意味着,如果在创建后台作业的过程中出现异常,则不会处理任何一个。假设您想向您的客户发送 1000 封电子邮件,而他们确实希望收到这些电子邮件。这是旧方法:
for ( var i = 0; i < 1000; i++)
{
BackgroundJob .Enqueue(() => SendEmail(i));
//遇到异常怎么办?
}
但是,如果存储变得不可用i == 500
怎么办?可能已经发送了 500 封电子邮件,因为工作线程会在它们创建后拾取并处理作业。如果您重新执行此代码,您的一些客户可能会收到烦人的重复代码。因此,如果您想正确处理此问题,您应该编写更多代码来跟踪发送了哪些电子邮件。
但这里有一个更简单的方法:
需要配置
在使用批处理之前,请调用文档GlobalConfiguration.Configuration.UseBatches
中写的方法。
批处理作业.StartNew (x =>
{
for ( var i = 0; i < 1000; i++)
{
x.Enqueue(() => SendEmail(i));
}
});
如果出现异常,您可能会向用户显示错误,并在几分钟后要求重试她的操作。无需其他代码!
链接批次
延续允许您将多个批次链接在一起。它们将在父批次的所有后台作业完成后执行。考虑前面的示例,您有 1000 封电子邮件要发送。如果您想在发送后进行最终操作,只需添加一个延续:
var id1 = BatchJob .StartNew( /* for (var i = 0; i < 1000... */ );
var id2 = BatchJob .ContinueBatchWith (id1, x =>
{
x.Enqueue(() => MarkCampaignFinished());
x.Enqueue(() => NotifyAdministrator());
});
因此,批处理和批处理延续允许您定义工作流并配置将并行执行的操作。这对于繁重的计算方法非常有用,因为它们可以分布到不同的机器上。
复杂的工作流程
创建操作不会限制您仅在Enqueued状态下创建作业。您可以安排作业稍后执行、添加延续、将延续添加到延续等。
var batchId = BatchJob .StartNew(x =>
{
x.Enqueue(() => Console .Write ( "1a..." ));
var id1 = x.Schedule(() => Console .Write ( "1b..." ), TimeSpan .FromSeconds(1));
var id2 = x.ContinueJobWith(id1, () => Console .Write( "2..." ));x.ContinueJobWith
(id2, () => Console.Write ( "3..." ));
});
BatchJob .ContinueBatchWith (batchId, x =>
{
x.Enqueue(() => Console .WriteLine( "4..." ));
});
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等现有工具来主动监控服务的运行状况。
相关文章
- 2022 云原生编程挑战赛火热报名中!看导师如何拆解 Serverless 赛题?
- MappingGenerator PRO 2023.3 Visual Studio 2019-2022
- 2022年全新音视频流媒体高级开发学习大纲FFmpeg/WebRTC/RTMP/RTSP/HLS/RTP播放器
- Awesome NLP — 2022 年 21 个流行的 NLP 库
- 【华为机试真题 Python实现】消消乐游戏【2022 Q1 Q2 | 100分】
- 【华为机试真题 Python实现】火星文计算【2022 Q1 Q2 | 100分】
- 2022 年度广东省职业院校学生专业技能大赛网络安全
- 2022年接口测试总结【温故知新系列】
- 30天进阶Selenium3自动化测试(1):2022年度最佳自动化测试工具
- 新能源汽车行业资讯-2022-9-22
- 2022年Web前端开发流程和学习路线
- MindFusion.WPF Pack 2022.R2 Crack
- 老杨说运维 | 2022直播首秀,与你共探智能运维建设之路