先附上两个项目的Github的地址

AntJob: NewLifeX/AntJob: 分布式任务调度系统,纯NET打造的重量级大数据实时计算平台,万亿级调度经验积累!面向中小企业大数据分析场景。 (github.com)

Hangfire: Hangfire – Background jobs and workers for .NET and .NET Core

先来粗略对比一下使用感受:

 

1.如果你的数据大多都是带时间戳的,那用Antjob可能会比较适合,Antjob的任务是一个连续的时间任务,没有周期这一说,时间跨度可以到天。

 后台的任务代码:

protected override Int32 Execute(JobContext ctx)
{
     Random ran = new Random();
     int n = ran.Next(100);
     // 当前任务时间
     var start = ctx.Task.Start;
     var end=ctx.Task.End;
     WriteLog("当前任务时间:{0}", start);

     // 成功处理数据量
     return n;
}

 从上下文中能很容易拿到当前任务所属时间范围, ctx.Task.Start、ctx.Task.End。

2.Hangfire传统的做法需要把job和服务端放在一起,这其实是很难实际运用到生产环境中的,因为你更新一个job,其他线上正在运行的job都会受到更新影响。所以一般都会使用第三方的扩展,这里使用的是Hangfire.HttpJob     Home · yuzd/Hangfire.HttpJob Wiki (github.com)

在使用Hangfire.HttpJob的时候,可以很容易实现客户端与服务端的分离,官方的Hangfire负责任务调度,Hangfire.HttpJob把job封装成一个http请求提供给Hangfire调度,同时支持在线修改周期任务配置。基本的job功能都能实现,其他的多层级执行Success貌似还有问题,在一些没有回调的场景下也不影响使用。

总结:推荐AntJob,AntJob项目经过中通快递亿级数据的实战,在实际使用中有保证。Hangfire自身的项目不支持服务端与客户端的分离,而且第三方插件Hangfire.HttpJob是个人维护项目,没经过大数据实战,使用有风险。

 

下面是Hangfire控制面板的一些截图

                                                                                                               图(1)· 周期性作业

                                                                                                        图(2)·失败作业

Tags是对任务的分类查询

                                                                                                    图(3)·Tag任务分类查询

                                                                                              图(4)·服务器汇总

                                                                                             图(5)·资源的监控