厦门专业网站设计代理,怎样审请网站,石家庄建设银行河北分行招聘网站,镇江详情设计Hangfire.Pro 有限的存储支持
Hangfire Pro 是一组扩展包#xff0c;允许使用批处理创建复杂的后台作业工作流程#xff0c;并提供对超快速Redis作为作业存储的支持 请注意#xff0c;仅在使用Hangfire.SqlServer、Hangfire.Pro.Redis或Hangfire.InMemory包作为作业存储时才…Hangfire.Pro 有限的存储支持
Hangfire Pro 是一组扩展包允许使用批处理创建复杂的后台作业工作流程并提供对超快速Redis作为作业存储的支持 请注意仅在使用Hangfire.SqlServer、Hangfire.Pro.Redis或Hangfire.InMemory包作为作业存储时才正式支持 Hangfire.Pro 包。我们不能保证批次能够与其他存储正常工作因为处理保证在很大程度上取决于具体的存储实现。
原子背景创造就业机会 批处理允许您自动创建一堆后台作业。这意味着如果在创建后台作业期间出现异常则不会处理任何作业。假设您想向客户发送 1000 封电子邮件而他们确实希望收到这些电子邮件。这是老方法
for ( var i 0; i 1000; i) { 后台作业.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()); }); 因此批次和批次延续允许您定义工作流程并配置将并行执行的操作。这对于繁重的计算方法非常有用因为它们可以分布到不同的机器上。
复杂的工作流程 创建操作并不限制您只能创建处于排队状态的作业。您可以安排作业稍后执行、添加延续、将延续添加到延续等。
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.性能计数器 性能监视器
Hangfire.Pro.PerformanceCounters软件包允许 Hangfire 将其内部指标发布到 Windows 性能计数器——这是监视 Windows 应用程序和服务的标准方法。
因此您可以使用Nagios、New Relic、Server Density等现有工具来主动监控服务的运行状况。