ABP官方文档翻译 7.2 Hangfire集成

news/2025/2/8 18:47:22 标签: 测试, 数据库

Hangfire集成

  • 介绍
  • ASP.NET Core集成
  • ASP.NET MVC 5.x集成
    • 面板授权

介绍

  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类的授权中间件之后调用。否则,授权会总是失败。

 

返回主目录

转载于:https://www.cnblogs.com/xajh/p/7124028.html


http://www.niftyadmin.cn/n/712245.html

相关文章

vscode还用装git_VScode 搭配Git

VScode搭配Git一、Visual Studio Code安装Windows版下载地址2、安装一般默认下一步即可3、安装完,默认语言为英文,需要安装中文语言,步骤如下(1)点击左侧的小方块(拓展)(2)搜索框输入“Chinese”,点击“Install”(3)稍等一会,软件…

一步一步学习Redis——五大数据类型之哈希(Hash)的相关命令

文章目录: 1.开篇 2.Redis哈希(Hash)的相关命令 2.1 HSET命令 语法 返回值 2.2 HGET命令 语法 返回值 2.3 HMSET命令 语法 返回值 2.4 HMGET命令 语法 返回值 2.5 HSETNX命令 语法 返回值 2.6 HDEL命令 语法 返回值 …

从java中安装webolgc_Javaweb| 文件下载

后台:Conteoller/*** 下载文件* param fileurl* param session* param response* throws IOException*/RequestMapping("/download")public void getFile(String fileurl, HttpSession session, HttpServletResponse response)throws IOException {Strin…

Git-命令的使用

2019独角兽企业重金招聘Python工程师标准>>> 丢弃历史 如现有提交历史: A->B->C->D->E->F,欲丢弃 C 之前的提交历史使得历史记录变为: C->D->E->F,则此时:基于 C 创建一个根提交,可以使用 git commit-tree将 D,E,F 变基到刚创建的根提交上.…

Java内部抽象类的匿名类初始化

说在前面的话,以前写过一次这个变态代码,后来重构,把那个new的语法简化了,最近又要整,差点都想不起来了,留个文档把 1、下面这个案例更变态,抽象类还有一个个泛型类:首先内部抽象类的…

matebook14支持触摸屏吗_2020款的matebook14增加了多点触控屏是最大亮点

华为matebook14终于获得了Windows的授权,而且更新十代酷睿处理器,更加值得一提的是,MateBook13/14版新增了触屏这一操作黑科技,也就是说,我们以后用的电脑也可以像手机一样,直接用手触屏操作。比如我们想放…

简单邮箱源码java_简单的java实现发送电子邮件

这里实现用Java发送电子邮件,可以发送简单文本,或者html,再或者就是带附件了。首先就是需要两个包,我用的是apache中commons中的,下载地址http://commons.apache.org/可以去下载。需要的两个包为:mail.jar、…

Word2007插入两种页码

做毕设,摘要,Abstract,目录,第一章,现在想要“摘要,Abstract,目录”编页码“为罗马数字,第一章开始为阿拉伯数字,可以按如下步骤: 1.各部分插入分页符&#x…