ABP官方文档翻译 7.2 Hangfire集成
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集成的更多相关文章
- ABP官方文档翻译 7.3 Quartz集成
Quartz集成 介绍 安装 创建Jobs 计划安排Jobs 更多 介绍 Quartz是一个全功能的.开源的job计划安排系统,可以用在小的apps也可以用于大型的企业系统.Abp.Quartz包简化 ...
- ABP官方文档翻译 9.3 NHibernate集成
NHibernate集成 Nuget包 配置 实体映射 仓储 默认实现 自定义仓储 应用程序特定基础仓储类 ABP可以使用任何ORM框架,它内置集成NHibernate.此文档将讲解ABP如何使用NH ...
- ABP官方文档翻译 9.1 EntityFramework集成
EntityFramework集成 Nuget包 DbContext 仓储 默认仓储 自定义仓储 应用特定的基础仓储类 自定义仓储示例 仓储最佳实践 事务管理 数据存储 ABP可以使用ORM框架,它内 ...
- ABP官方文档翻译 8.2 SignalR集成
SignalR集成 介绍 安装 服务器端 客户端 建立连接 內建特征 通知 在线客户端 PascalCase与CamelCase对比 你的SignalR代码 介绍 ABP中的Abp.Web.Signa ...
- ABP官方文档翻译 5.4 SwaggerUI集成
SwaggerUI集成 介绍 ASP.NET Core 安装Nuget包 配置 测试 ASP.NET 5.x 安装Nuget包 配置 测试 介绍 在它的网站上:“...使用Swagger可用的API, ...
- ABP官方文档翻译 5.3 OData集成
OData集成 介绍 安装 安装Nuget包 设置模块依赖 配置实体 创建控制器 配置 示例 获取实体列表 Request Response 获取单个实体 Request Response 使用导航属 ...
- ABP官方文档翻译 1.6 OWIN集成
OWIN集成 安装 使用 如果在应用程序里既使用ASP.NET MVC也使用ASP.NET Web API,需要在工程里安装Abp.Owin包. 安装 添加Abp.Owin包到主工程里(一般是web工 ...
- 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 ...
- ABP官方文档翻译 7.1 后台Jobs和Workers
后台Jobs和Workers 介绍 后台Jobs 关于Job持久化 创建后台Job 在队列中添加一个新Job 默认的后台Job管理器 后台Job存储 配置 禁用Job执行 异常处理 Hangfire集 ...
随机推荐
- [bzoj2462] [BeiJing2011]矩阵模板
二维的hash.. 注意n的范围是1000........ 真相似乎是全部输出1就行了233 #include<cstdio> #include<iostream> #incl ...
- Apache Shiro 核心概念
转自:http://blog.csdn.net/peterwanghao/article/details/8015571 Shiro框架中有三个核心概念:Subject ,SecurityManage ...
- SSL数字证书Nginx配置部署
由于小程序和Ios端的需要,公司的项目需要从原来的http协议扩展到https协议,因为项目本来就有采用nginx做了负载均衡,但是之前配置nginx的时候并没有配置关于https的内容,所以需要做这 ...
- [国嵌攻略][071][Coredump故障分析]
Core Dump定义 Core Dump又叫核心转存.当程序在运行过程中发生异常,Linux系统可以把程序出错时的内存内容存储在一个core文件中,这个过程叫Core Dump. Core Dump ...
- 微信小程序实现淡入淡出效果(页面跳转)
//目前小程序没有fadeIn(),fadeOut()方法所以还是本方法手写 <!--wxml--><!--蒙版(渐出淡去效果)--><view class=" ...
- thinkphp5z
解决验证类下找不到指定的类,就在D:\phpStudy\www\vuethink\php\application\admin\validate\service.php,缺少验证类文件service.p ...
- css cursor属性-显示的光标的类型(形状)的用法和定义
在网页布局的时候,在特定的地方,光标形状各有区别.这个时候,就需要用到css的cursor属性.根据自身需要选择设置鼠标指针样式. 定义和用法 cursor 属性规定要显示的光标的类型(形状). 该属 ...
- IOS学习笔记27—使用GDataXML解析XML文档
http://blog.csdn.net/ryantang03/article/details/7868246
- Android调试错误-No resource identifier found for attribute 'showAsAction'
转载自:http://www.bubuko.com/infodetail-498830.html 1.问题描述: 24\YoumiAndroidSdk\demo\offers\res\menu\mai ...
- Java泛型解析
1. 概述 在引入范型之前,Java类型分为原始类型.复杂类型,其中复杂类型分为数组和类.引入范型后,一个复杂类型就可以在细分成更多的类型. 例如原先的类型List,现在在细分成List< ...