Hangfire集成

介绍

  Hangfire是一个综合的后台job管理器。你可以 把它集成到ABP,用来取代默认的后台job管理器。Hangfire可以使用相同的后台jobAPI。因此,你的代码与Hangfire是独立的。但是,如果你喜欢的话,可以直接使用Hangfire的API。

  Hangfire集成依赖于使用的框架。

ASP.NET Core集成

  Abp.HangFire.AspNetCore包用来集成到ASP.NET Core基础应用程序。它依赖于Hangfire.AspNetCore。这个文档描述了如何在ASP.NET Core工程中安装Hangfire。它和ABP基础工程相似。首先,在你的工程中安装Abp.HangFire.AspNetCore包:

Install-Package Abp.HangFire.AspNetCore

  然后你可以为hangfire安装任何仓储。最常见的为SQL Server仓储(参见Hangfire.SqlServer nuget包),当你安装完这些nuget包之后,就可以配置你的工程使用Hangfire了。

  首先,我们修改Startup类,在ConfigureServices方法中将Hangfire添加到依赖注入系统并配置仓储、连接字符串:

services.AddHangfire(config =>
{
config.UseSqlServerStorage(_appConfiguration.GetConnectionString("Default"));
});

  然后,我们可以在Configure方法中添加UserHangfireServer调用:

app.UseHangfireServer();

  如果你想使用hangfire的面板,可以添加它:

app.UseHangfireDashboard();

  如果你想授权面板,你可以按如下所示使用AbpHangfireAuthorizationFilter:

app.UseHangfireDashboard("/hangfire", new DashboardOptions
{
Authorization = new[] { new AbpHangfireAuthorizationFilter("MyHangFireDashboardPermissionName") }
});

  上面的配置基本上为ASP.NET Core应用程序集成hangfire的标准。对于ABP基础工程,也可以配置我们的web模块使用Hangfire取代ABP默认的后台job管理器:

[DependsOn(typeof (AbpHangfireAspNetCoreModule))]
public class MyProjectWebModule : AbpModule
{
public override void PreInitialize()
{
Configuration.BackgroundJobs.UseHangfire();
} //...
}

  我们添加AbpHangfireAspNetCoreModule作为依赖并使用Configuration.BackgroundJobs.UseHangfire方法使用Hangfire取代ABP的默认后台job管理器。

  Hangfire需要数据库的模式创建权限,因为首次运行时它会创建自己的模式和表。参见Hangfire文档了解更多信息。

ASP.NET MVC 5.x集成

  Abp.HangFire nuget包用于ASP.NET MVC 5.x工程:

Install-Package Abp.HangFire

  然后,你可以为Hangfire安装任何仓储。一般使用SQLServer仓储(参见Hangfire.SqlServer nuget包)。当你安装完这些nuget包之后,可以按如下配置你的工程来使用Hangfire:

[DependsOn(typeof (AbpHangfireModule))]
public class MyProjectWebModule : AbpModule
{
public override void PreInitialize()
{
Configuration.BackgroundJobs.UseHangfire(configuration =>
{
configuration.GlobalConfiguration.UseSqlServerStorage("Default");
}); } //...
}

  我们添加AbpHangfireModule作为依赖并使用Configuration.BackgroundJobs.UseHangfire方法来启用和配置Hangfire("Default"是web.config中的默认连接字符串)。

  Hangfire需要数据库的模式创建权限,因为首次执行时它会创建自己的模式和表。参见Hangfire文档了解更多信息。

面板授权

  Hangfire可以显示一个面板实时的显示所有后台job的状态。你可以参照它的文档来配置它。默认,面板页对所有的客户可用,无需授权。你可以集成它到ABP的授权系统,然后使用定义在Abp.HangFire包的AbpHangfireAuthorizationFilter类。示例配置:

app.UseHangfireDashboard("/hangfire", new DashboardOptions
{
Authorization = new[] { new AbpHangfireAuthorizationFilter() }
});

  这会检查当前用户是否登录。如果你想需要一个额外的权限,可以传递给他的构造函数:

app.UseHangfireDashboard("/hangfire", new DashboardOptions
{
Authorization = new[] { new AbpHangfireAuthorizationFilter("MyHangFireDashboardPermissionName") }
});

  注意:UseHangfireDashboard需要在Startup类的授权中间件之后调用。否则,授权会总是失败。

返回主目录

ABP官方文档翻译 7.2 Hangfire集成的更多相关文章

  1. ABP官方文档翻译 7.3 Quartz集成

    Quartz集成 介绍 安装 创建Jobs 计划安排Jobs 更多 介绍 Quartz是一个全功能的.开源的job计划安排系统,可以用在小的apps也可以用于大型的企业系统.Abp.Quartz包简化 ...

  2. ABP官方文档翻译 9.3 NHibernate集成

    NHibernate集成 Nuget包 配置 实体映射 仓储 默认实现 自定义仓储 应用程序特定基础仓储类 ABP可以使用任何ORM框架,它内置集成NHibernate.此文档将讲解ABP如何使用NH ...

  3. ABP官方文档翻译 9.1 EntityFramework集成

    EntityFramework集成 Nuget包 DbContext 仓储 默认仓储 自定义仓储 应用特定的基础仓储类 自定义仓储示例 仓储最佳实践 事务管理 数据存储 ABP可以使用ORM框架,它内 ...

  4. ABP官方文档翻译 8.2 SignalR集成

    SignalR集成 介绍 安装 服务器端 客户端 建立连接 內建特征 通知 在线客户端 PascalCase与CamelCase对比 你的SignalR代码 介绍 ABP中的Abp.Web.Signa ...

  5. ABP官方文档翻译 5.4 SwaggerUI集成

    SwaggerUI集成 介绍 ASP.NET Core 安装Nuget包 配置 测试 ASP.NET 5.x 安装Nuget包 配置 测试 介绍 在它的网站上:“...使用Swagger可用的API, ...

  6. ABP官方文档翻译 5.3 OData集成

    OData集成 介绍 安装 安装Nuget包 设置模块依赖 配置实体 创建控制器 配置 示例 获取实体列表 Request Response 获取单个实体 Request Response 使用导航属 ...

  7. ABP官方文档翻译 1.6 OWIN集成

    OWIN集成 安装 使用 如果在应用程序里既使用ASP.NET MVC也使用ASP.NET Web API,需要在工程里安装Abp.Owin包. 安装 添加Abp.Owin包到主工程里(一般是web工 ...

  8. ABP官方文档翻译 10.1 ABP Nuget包

    ABP Nuget包 Packages Abp Abp.AspNetCore Abp.Web.Common Abp.Web Abp.Web.Mvc Abp.Web.Api Abp.Web.Api.OD ...

  9. ABP官方文档翻译 7.1 后台Jobs和Workers

    后台Jobs和Workers 介绍 后台Jobs 关于Job持久化 创建后台Job 在队列中添加一个新Job 默认的后台Job管理器 后台Job存储 配置 禁用Job执行 异常处理 Hangfire集 ...

随机推荐

  1. 搭建vue开发环境的步骤

    相信很多人在刚开始学习vue这个框架的时候,在最开始搭建开发环境的时候,都会遇到一些大大小小的坑,我之前在学习angular的时候搭建过一次,过了一个月后在搭建第二次的时候,竟然有一些混乱,所以今天想 ...

  2. C#的LINQ

    在过去如果我们如果需要去查询某些集合或者数组里面的某些元素,我们需要写出大量的带有筛选的遍历集合的代码,但是有了Linq之后,我们就不用写出那些冗余麻烦的遍历代码,只需要关注其中的筛选,排列的函数就可 ...

  3. Linux中git的使用

    之前在windows中一直采用github的桌面版,库的建立更新都是借助软件的帮助.所使用的的功能也非常局限,仅仅只是创建库再提交自己的代码.至于版本管理.回滚.分支以及git的结构都没有清楚的认识. ...

  4. light oj 1184 Marriage Media

    题目: You run a marriage media. You take some profiles for men and women, and your task is to arrange ...

  5. 【centos6.5 hadoop2.7 _64位一键安装脚本】有问题加我Q直接问

    #!/bin/bash#@author:feiyuanxing [既然笨到家,就要努力到家]#@date:2017-01-05#@E-Mail:feiyuanxing@gmail.com#@TARGE ...

  6. Spark应用_PageView_UserView_HotChannel

    Spark应用_PageView_UserView_HotChannel 一.PV 对某一个页面的访问量,在页面中进行刷新一次就是一次pv PV {p1, (u1,u2,u3,u1,u2,u4-)} ...

  7. java 数据类型间的转换

    byte a = (byte)129; 129已经超过了byte数据类型的存储上限,所以需要在值的前面加括号需要转换的数据类型名. 但是从高往低转的时候数值精度会有丢失; 所以最后结果为 a = -1 ...

  8. spring定时任务执行两次 项目重复初始化 项目启动两次

    tomcat/config/server.xml中Host标签Context节点的问题 项目里quartz定时器总是被执行2次,通过打印发现原来项目被加载了两次,所以项目下的Listener被重复加载 ...

  9. client和nginx简易交互过程

    # client和nginx简易交互过程- step1:client发起http请求- step2:dns服务器解析域名得到主机ip- step3:默认端口为80,通过ip+port建立tcp/ip链 ...

  10. dedecms 封面模板和列表模板有什么不同

    封面模板,相当于你一个大栏目的封面.举例:你有一个栏目叫做"建站"而下面有很多子栏目,例如代码教程.模板下载.seo经验等,那么封面就相当于这个大栏目的首页,然后您可以在这个页面展 ...