.net6 webapi简单使用Hangfire完成fire and forget任务

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

.net6 webapi项目,发送通知等代码一般不需要在业务逻辑中执行

完成业务逻辑后,发送通知可以通过fire and forget方法来执行

这里使用Hangfire来完成

Hangfire将这些任务作为一个队列,队列的信息本项目使用SQLServer来存储(Hangfire也提供其他存储方式,例如Redis)

首先安装如下3个包(版本号1.7.33)

install-package Hangfire
install-package Hangfire.AspNetCore
install-package Hangfire.SqlServer

然后在Program.cs中加入如下配置

//Hangfire 数据库字符串改为自己的
builder.Services.AddHangfire(configuration => configuration.SetDataCompatibilityLevel(CompatibilityLevel.Version_170)
.UseSimpleAssemblyNameTypeSerializer()
.UseRecommendedSerializerSettings()
.UseSqlServerStorage(builder.Configuration.GetConnectionString("FactoryDBString"), new SqlServerStorageOptions
{
    CommandBatchMaxTimeout = TimeSpan.FromMinutes(5),
    SlidingInvisibilityTimeout = TimeSpan.FromMinutes(5),
    QueuePollInterval = TimeSpan.Zero,
    UseRecommendedIsolationLevel = true,
    DisableGlobalLocks = true
}));
builder.Services.AddHangfireServer();


然后在业务逻辑处加入如下代码即可

//TestMethodAsync(params)自定义一个方法来测试FireAndForget
BackgroundJob.Enqueue(() => TestMethodAsync(params));

你可能感兴趣的:(C#,asp.net,c#)