关于hangfire的使用
hangfire 是一个分布式后台执行服务。用它可以代替ThreadPool.QueunItemWork等原生方法。当然4.5后的 task也是相当好用且功能强大。不过如果想分布式处理并且可监控的话,hangfire绝对满足需求。
我使用hangfire更看重监控层面。
hangfire的执行步骤:
1.客户端创建一个job任务
2.持久化job数据
3.服务端定时fetch数据源
4.如果规则匹配则通过子线程执行job
Client端:
配置:
public void Configuration(IAppBuilder app)
{
app.UseHangfire(config =>
{
config.UseSqlServerStorage("<connection string or its name>");
//config.UseServer(); // 加上这句客户端和服务端就真在一起了
});
}
Enqueue 方法: 放入队列执行。执行后销毁
BackgroundJob.Enqueue(() => Console.WriteLine("Fire-and-forget"));
Schedule方法: 延迟执行。第二个参数设置延迟时间。
BackgroundJob.Schedule(() => Console.WriteLine("Delayed"), TimeSpan.FromDays(1));
AddOrUpdate方法:重复执行。第二个参数设置cronexpression表达式。
参考quartz文档:http://jingyan.baidu.com/article/a3761b2b8e843c1576f9aaac.html
RecurringJob.AddOrUpdate(() => Console.Write("Recurring"), Cron.Daily);
Server端:
namespace WindowsService1
{
public partial class Service1 : ServiceBase
{
private readonly BackgroundJobServer _server; public Service1()
{
InitializeComponent(); JobStorage.Current = new SqlServerStorage("connection_string");
_server = new BackgroundJobServer();
} protected override void OnStart(string[] args)
{
_server.Start();
} protected override void OnStop()
{
_server.Dispose();
}
}
}
关于hangfire的使用的更多相关文章
- Hangfire项目实践分享
Hangfire项目实践分享 目录 Hangfire项目实践分享 目录 什么是Hangfire Hangfire基础 基于队列的任务处理(Fire-and-forget jobs) 延迟任务执行(De ...
- ABP文档 - Hangfire 集成
文档目录 本节内容: 简介 集成 Hangfire 面板授权 简介 Hangfire是一个综合的后台作业管理器,可以在ABP里集成它替代默认的后台作业管理器,你可以为Hangfire使用相同的后台作业 ...
- ABP源码分析三十九:ABP.Hangfire
ABP对HangFire的集成主要是通过实现IBackgroundJobManager接口的HangfireBackgroundJobManager类完成的. HangfireBackgroundJo ...
- [翻译+山寨]Hangfire Highlighter Tutorial
前言 Hangfire是一个开源且商业免费使用的工具函数库.可以让你非常容易地在ASP.NET应用(也可以不在ASP.NET应用)中执行多种类型的后台任务,而无需自行定制开发和管理基于Windows ...
- Hangfire入门(任务调度)
一.简介 英文官网:http://hangfire.io/ 开源地址:https://github.com/HangfireIO Hangfire 不依赖于具体的.NET应用类型,包含.NET 和.N ...
- ABP框架理论学习之Hangfire集成
返回总目录 Hangfire是一个综合的后台工作管理者.你可以将Hangfire集成到ABP中,这样就可以不使用默认的后台工作管理者了.但你仍然可以为Hangfire使用相同的后台工作API.这样,你 ...
- 在ASP.NET Web API项目中使用Hangfire实现后台任务处理
当前项目中有这样一个需求:由前端用户的一个操作,需要触发到不同设备的消息推送.由于推送这个具体功能,我们采用了第三方的服务.而这个服务调用有时候可能会有延时,为此,我们希望将消息推送与用户前端操作实现 ...
- ASP.NET Core开发-后台任务利器Hangfire使用
ASP.NET Core开发系列之后台任务利器Hangfire 使用. Hangfire 是一款强大的.NET开源后台任务利器,无需Windows服务/任务计划程序. 可以使用于ASP.NET 应用也 ...
- 执行后台任务的利器——Hangfire
今年1月31日,在微软的MVP 2015社区大讲堂上,我给大家分享了一个演讲:在ASP.NET应用中执行后台任务.其中介绍了三种技术的应用:QueueBackgroundWorkItem.Hangfi ...
- Hangfire项目使用
基本介绍: hangfire 主要用于根据设置时间来执行任务,间隔几分钟执行一次,每天几点钟执行一次,如此执行任务. 方法: backgroundjob.enqueue(()=>"要执 ...
随机推荐
- 百度地图Api进阶教程-点击生成和拖动标注4.html
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...
- Java dynamical proxy demo
今天练习了一下动态代理的一个方面,假设使用它来完成自动设置默认不提交,启动事务,获取到异常则回滚,正常执行则提交. 如果不使用动态代理,则需要在每个方法本身里面设置Connection,写try,ca ...
- SSH web.xml文件配置
启动一个WEB项目的时候, WEB容器会去读取它的配置文件web.xml web.xml中配置的加载优先级:context-param -> listener -> filter -> ...
- solr性能调优
Schema Design Considerations indexed fields indexed fields 的数量将会影响以下的一些性能: 索引时的时候的内存使用量 索引段的合并时间 优化时 ...
- LeetCode题解-----Median of Two Sorted Arrays
题目描述: There are two sorted arrays nums1 and nums2 of size m and n respectively. Find the median of t ...
- selenium更改readonly属性
1.用js实现 JavascriptExecutor removeAttribute = (JavascriptExecutor)dr; //remove readonly attrib ...
- 阿里巴巴Druid数据源,史上最强的数据源,没有之一
目前常用的数据源主要有c3p0.dbcp.proxool.druid,先来说说他们Spring 推荐使用dbcp:Hibernate 推荐使用c3p0和proxool1. DBCP:apacheDBC ...
- 判断变量是否为json对象
var m ={a:'A'}; if(typeof m == 'object' && JSON.stringify(m).indexOf('{') == 0){//判断变量m是不是js ...
- System.Net.Sockets.Socket SendAsync System.ObjectDisposedException: Cannot access a disposed object.
发生未处理的域异常! System.ObjectDisposedException: Cannot access a disposed object. Object name: 'System.Net ...
- 11SpringMvc_一个Action中,写多个类似的业务控制方法
我们要实现这么一个功能: 编写两个表单,提交到同一个Action中的不同的处理方法中.比如注册和登录,都提交到UserAction这个控制类中.但是这两个提交由userAction这个控制类不同的方法 ...