HangFire简单实践

Hangfire在.net core WebAPI中的简单应用

  • 安装Hangfire

    1. 在visual studio中 工具 >> Nuget包管理器 >> 程序包管理控制器 打开nuget控制台

    2. 输入 Insatll-Package Hangfire 安装HangFire,等待安装完成

      结果如下图:
      HangFire简单实践

  • 注册及配置Hangfire(使用Sql Server)

    1. appsettings.json 文件中添加数据库连接字符串配置

      (```)

      "ConnectionStrings": {
          "defaultDB": "Server=.;Database=ApiDataBase;uid=sa;pwd=svse;MultipleActiveResultSets=true"
        }
      

      (```)

    2. Startup.cs 文件中的 ConfigureServices 方法中写入代码

      (```)

      	// 为Hangfire使用数据库连接
          services.AddHangfire(configuration => configuration.UseSqlServerStorage(Configuration.GetConnectionString("defaultDB")));
      
          // 注册Hangfire服务
          services.AddHangfireServer();
      

      (```)

      同时在 Configure 方法中写入代码

      (```)

      	// 为Hangfire使用数据库连接
          services.AddHangfire(configuration => configuration.UseSqlServerStorage(Configuration.GetConnectionString("defaultDB")));
      
          // 注册Hangfire服务
          services.AddHangfireServer();
      

      (```)

  • 查看Hangfire管理视图

    1. 运行项目,然后在项目地址后面加上 hangfire 即可查看Hangfire管理视图

      例:项目地址是: https://localhost:44323/weatherforecast ,输入 https://localhost:44323/hangfire即可访问

      HangFire简单实践

  • 调度代码应用

    1. 支持基于队列的任务处理:任务执行不是同步的,而是放到一个持久化队列中,以便马上把请求控制权返回给调用者。

      var jobId = BackgroundJob.Enqueue(() => function());

    2. 延迟执行任务,不是马上调用方法,而是设定一个未来的时间来执行,延迟作业仅执行一次

      var jobId = BackgroundJob .Schedule(()=> function(),TimeSpan .FromDays(1));//这里设置的是一天后执行

    3. 循环执行,一行代码添加重复执行的任务,其内置了常见的时间循环模式,也可基于CRON表达式来设定复杂的模式。

      RecurringJob.AddOrUpdate(() => function(), Cron.Minutely);//最小单位是分钟,即最低仅可按照一分钟一次执行

    4. 延续性任务执行,可以在第一个任务执行完之后紧接着再次执行另外的任务,指定在某一个任务完成后立即执行你想执行的任务

      BackgroundJob.ContinueWith(jobId, () => function());

  • 部署

    数据库创建

    按照appsettings.json文件中配置的数据库名称建立数据库

    打开sqlserver >> 点击新建查询,然后执行下面代码即可(数据库名需和appsettings.json配置文件中的一致)

    create database 数据库名 go

    .net core webapi部署到iis

    1. 安装.net core runtime,下载地址: https://dotnet.microsoft.com/download
    2. 点击WebApi项目右键->发布,选择IIS为发布目标,点击发布;
    3. 选择文件系统,指定发布路径 ,选择release配置,框架对应项目使用框架,然后保存确定
    4. 打开IIS服务器,添加网站,物理路径选择发布的路径,配置端口号为你想要的端口,确定。
    5. 打开应用程序池,选择对应的同名应用程序池->右键->基本设置->.NET CLR 版本选择无托管代码,确定。然后回到网站列表,重启下网站。
    6. 在浏览器*问对应端口号,即可。

    .net core webpai部署到windows service上

    1. 先添加nuget包,在nuget程序包管理控制器中执行代码install-packAge Microsoft.Extensions.Hosting.WindowsServices , 需要在项目代码中 Program.cs 文件的 CreateHostBuilder 方法中添加 UseWindowsService()

      HangFire简单实践

    2. 在项目中重新发布,将整个发布文件拷贝至服务器

    3. 安装.net core runtime,下载地址: https://dotnet.microsoft.com/download (若已安装请忽略)

    4. 在C:\Windows\System32文件夹中找到cmd.exe,以管理员身份运行

    5. 执行命令sc.exe create 服务名称 binPath= 项目地址,(注意:此处binPath=后面需要加上一个空格,否则服务将创建失败)

    6. 执行命令sc.exe start 服务名称 启动服务,然后即可通过http://localhost:5000/访问你的webpai

上一篇:2021-03-11


下一篇:dotnet 控制台 Hangfire 后台定时任务