首页 > 其他分享 >创建 Hangfire 定时任务项目

创建 Hangfire 定时任务项目

时间:2023-10-05 09:57:24浏览次数:34  
标签:创建 app Hangfire BackgroundJob 任务 定时 执行 builder

创建 ASP.NET Core Web 应用程序

 使用 NuGet 安装 Hangfire 依赖程序包

<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>net6.0</TargetFramework>
    <Nullable>enable</Nullable>
    <ImplicitUsings>enable</ImplicitUsings>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Hangfire.AspNetCore" Version="1.8.5" />
    <PackageReference Include="Hangfire.Core" Version="1.8.5" />
    <PackageReference Include="Hangfire.SqlServer" Version="1.8.5" />
    <PackageReference Include="Microsoft.Data.SqlClient" Version="5.1.1" />
  </ItemGroup>

</Project>

创建数据库

CREATE DATABASE [HangfireTest]
GO

打开 appsettings.json 配置数据库连接字符串

 

 "ConnectionStrings": {
    "HangfireConnection": "Server=DESKTOP-DABHN6U\\MSSQLSERVER2014;uid=sa;pwd=123456;database=HangfireTest;MultipleActiveResultSets=true;TrustServerCertificate=true;"
  },

注册服务,打开 Program.cs 文件

 var builder = WebApplication.CreateBuilder(args);

            // Add services to the container.
            builder.Services.AddRazorPages();

            builder.Services.AddHangfire(configuration => configuration
        .SetDataCompatibilityLevel(CompatibilityLevel.Version_180)
        .UseSimpleAssemblyNameTypeSerializer()
            .UseRecommendedSerializerSettings()
        .UseSqlServerStorage(builder.Configuration.GetConnectionString("HangfireConnection")));

            builder.Services.AddHangfireServer();

            var app = builder.Build();

同时添加仪表板 UI

  app.UseHangfireDashboard();
            BackgroundJob.Enqueue(() => Console.WriteLine("Hello world from Hangfire!"));
            RecurringJob.AddOrUpdate(
     "myrecurringjob",
    () => Console.WriteLine("重复执行!"),
     Cron.Minutely);

            app.UseHttpsRedirection();
            app.UseStaticFiles();

            app.UseRouting();

            app.UseAuthorization();

            app.MapHangfireDashboard();

运行应用程序

运行后数据库表自动创建

 查看后台作业

https://localhost:7282/hangfire

 

 引用:https://docs.hangfire.io/en/latest/getting-started/aspnet-core-applications.html 

 官方网站:https://www.hangfire.io/ 

  

 

 

//支持基于队列的任务处理:任务执行不是同步的,而是放到一个持久化队列中,以便马上把请求控制权返回给调用者。
var jobId = BackgroundJob.Enqueue(()=>WriteLog("队列任务执行了!"));

//延迟任务执行:不是马上调用方法,而是设定一个未来时间点再来执行,延迟作业仅执行一次
var jobId = BackgroundJob.Schedule(()=>WriteLog("一天后的延迟任务执行了!"),TimeSpan .FromDays(1));//一天后执行该任务

//循环任务执行:一行代码添加重复执行的任务,其内置了常见的时间循环模式,也可基于CRON表达式来设定复杂的模式。【用的比较的多】
RecurringJob.AddOrUpdate(()=>WriteLog("每分钟执行任务!"), Cron.Minutely); //注意最小单位是分钟

//延续性任务执行:类似于.NET中的Task,可以在第一个任务执行完之后紧接着再次执行另外的任务
BackgroundJob.ContinueWith(jobId,()=>WriteLog("连续任务!"));

  

 其它定时任务:Quartz.NET

 

  

标签:创建,app,Hangfire,BackgroundJob,任务,定时,执行,builder
From: https://www.cnblogs.com/friend/p/17743084.html

相关文章

  • openssl创建证书
    安装brewinstallopenssl使用root@MACdeMBPrem_key#opensslreq-x509-newkeyrsa:4096-keyoutkey.pem-outcert.pem-days365Generatinga4096bitRSAprivatekey................................................................................................
  • go定时任务
    目录go定时任务TimeNewTimerNewTickercron文档go定时任务TimeNewTimerpackagemainimport( "fmt" "time")funccronTimer(){ /** timer定时器实现一些定时操作本质通过chan阻塞实现且只执行一次 t:=time.NewTimer(时间):新建定时器 <-t.C:管道取值阻塞 t.......
  • 6.命令创建maven项目
    创建工程学写法mvnarchetype:generate    -DgroupId={project-packagingl-DartifactId={project-name}-DarchetypeArtifactId=maven-archetype-quickstart-DinteractiveMode=false创建iava工程mvnarchetype:generate -DgroupId=com.zyf-DartifactId=java-......
  • FreeRTOS 原理 --- 软件定时器
     简介 有一个定时器任务,任务内读队列。启动定时器,会向队列发送消息,定时器任务读到消息后把定时器回调函数等信息作为一个链表项插入链表。当链表有链表项,算出还剩多长时间执行定时器回调函数,这个时间作为定时器任务阻塞时间。所以定时器任务重新运行要么是时间到准备运行定时器......
  • 数组动态创建问题
    数组动态创建问题C++较新版本中允许通过变量方式动态创建数组intn;cin>>n;inta[n]={0};但有些ide会提示"表达式必须含有常量值c/c++"问题,可用一下方式消除此问题intn;cin>>n;inta*=newint[n];......
  • 《DjangoApp开发》第二集,创建项目骨架、主菜单页面及跳转
    2023年10月3日这节课做的事情创建项目目录对项目进行全局时间、配置创建项目骨架,配置一堆文件写主页面切换页面项目结构。当我们发现代码很长的时候就分成多个子目录菜单界面对战界面玩家玩家的技能玩家的每一个技能玩家的移动背景时间设置界......
  • Navicat如何创建定时任务
    1、查看定时任务是否开启进入Navicat执行语句:showvariableslike'%event_scheduler%';(如下图),如果Value为“ON”说明已经开启,如果是“OFF”说明是关闭状态,执行语句:setglobalevent_scheduler=1;开启任务(event_scheduler1为NO,0为OFF)2、Navicat中创建函数,函数中写好需要处......
  • Linux(CentOS7)定时执行任务Crond详细说明&操作图解
    一、Cron服务1)概念介绍cron是服务名称。crond是后台进程,用来执行脚本,在系统中一直会运行。crontab是一个工具,用来管理定时任务列表,定制好的计划任务,需要启动crond服务(系统默认安装),crond服务是通过crontab命令实现。2)crontab工作运行linux后,开机自启动crond任务,系统会每分钟......
  • 《DjangoApp开发》第一集——配置环境及项目创建
    2023年10月2日前言今天中午、下午都出去了。晚上回来看看。上午实现了本地局域网的Linux配置。里面的Django学习内容全来自,Acwing的Django工程课。目录——实现内容Ubuntu本地局域网配置ssh配置Docker配置Acwing的镜像、用户创建项目、预览项目设置vim无法写入中文解决......
  • SQLite学习笔记——创建数据库和SELECT,INSERT语句
    SQLite创建数据库我们可以直接使用sqlite3DatabaseName.db来创建数据库,这时候我们就会发现同一目录下出现了对应的.db文件或者我们可以先启动sqlite3然后在里面使用点命令.openDatabaseName.db来创建数据库,如果已经存在对应的数据库,那么我们默认就会打开该数据库。......