EaCloud.Hangfire
8.0.0.8
There is a newer version of this package available.
See the version list below for details.
See the version list below for details.
dotnet add package EaCloud.Hangfire --version 8.0.0.8
NuGet\Install-Package EaCloud.Hangfire -Version 8.0.0.8
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="EaCloud.Hangfire" Version="8.0.0.8" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add EaCloud.Hangfire --version 8.0.0.8
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: EaCloud.Hangfire, 8.0.0.8"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install EaCloud.Hangfire as a Cake Addin #addin nuget:?package=EaCloud.Hangfire&version=8.0.0.8 // Install EaCloud.Hangfire as a Cake Tool #tool nuget:?package=EaCloud.Hangfire&version=8.0.0.8
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
EaCloud Hangfire 后台任务组件
说明
EaCloud Hangfire 后台任务组件,封装基于 Hangfire 后台任务的服务端实现。
用法
可按照如下配置方式使用:
- 通过nuget引用
EaCloud.Hangfire
程序集
Install-Package EaCloud.Hangfire
- 在
appsettings.json
中 的EaCloud
节点下添加如下配置节点
{
"Hangfire": {
"Title": "EaCloud任务管理", //显示在仪表板上的标题
"ServerName": "EaCloudHangfire", //服务器名称
"WorkerCount": 20, //并发任务数 --超出并发数。将等待之前任务的完成 (推荐并发线程是cpu 的 5倍)
"StorageType": "Sqlserver", //存储类型:"Sqlserver"、"PostgreSql"、"SQLite"、"MySql"、"Oracle"、"Mongo"、"Redis"、"Memory"
//存储连接字符串:指定的数据库名必须已经存在,可以手动创建空数据库或者使用当前数据库
"StorageConnectionString": "Data Source=127.0.0.1;Initial Catalog=EaCloudDEV.Hangfire;User ID=sa;Password=p@ssw0rd;Pooling=true;Min Pool Size=1;Max Pool Size=60;Integrated Security=false;Connect Timeout=60;Application Name=EaCloud",
"DashboardUrl": "/hangfire", //仪表盘URL路径
"AuthorizationType": "Basic", //授权访问类型:"Anonymous"、"Basic"
//Hangfire基本身份验证的选项,当 AuthorizationType = "Basic" 时生效。
"BasicOptions": {
"SslRedirect": false, //SSL重定向
"RequireSsl": false, //需要SSL连接才能访问Hangfire Dashboard
"LoginCaseSensitive": false, //登录检查是否区分大小写
//访问Hangfire仪表板的用户列表
"Users": [
{
//登录名
"UserId": "用户身份标识",
//登录密码
"Password": "访问密码"
}
]
},
"Enabled": true //是否启用
}
}
- 若存储类型设为数据库类型(
Sqlserver
、PostgreSql
、SQLite
、MySql
、Oracle
、Mongo
),则需要按照连接串去新建Hangfire用的空数据库(只要库就可以,表会自动生成)。 - 启动web项目后,访问
http(s)://ip:port/(DashboardUrl)
即可打开Hangfire仪表盘界面。 - 后端使用Hangfire代码示例
5.1. 项目中新建
XXXHangfireJobRunner
实现类并添加[Dependency(ServiceLifetime.Singleton)]
单例服务特性,继承IHangfireJobRunner
接口在Start
方法中添加Hangfire任务逻辑
#region "Hangfire作业运行器"
/// <summary>
/// Hangfire作业运行器
/// </summary>
[Dependency(ServiceLifetime.Singleton)]
public class HangfireJobRunner : IHangfireJobRunner
{
/// <summary>
/// 启动作业运行器
/// </summary>
public void Start()
{
//队列任务
BackgroundJob.Enqueue(() => Console.WriteLine($@"队列任务"));
//延时任务
var jobId = BackgroundJob.Schedule(() => Console.WriteLine($@"延时任务"), TimeSpan.FromMinutes(1));
//延续性任务执行
BackgroundJob.ContinueJobWith(jobId, () => Console.WriteLine($@"延续性任务执行"));
//定时任务
RecurringJob.AddOrUpdate("JobId1", () => Console.WriteLine($@"定时任务:每年的4月12号15点52分任意秒执行 没加时区 小时+8"), "* 52 15 12 4 *"); //每年的4月12号15点52分任意秒执行 没加时区 小时+8
RecurringJob.AddOrUpdate("JobId2", () => Console.WriteLine($@"定时任务:每分钟执行一次"), Cron.Minutely); //每分钟执行一次。
RecurringJob.AddOrUpdate("JobId3", () => Console.WriteLine($@"定时任务:每天18点36分 当前时区"), Cron.Daily(18, 36), new RecurringJobOptions { TimeZone = TimeZoneInfo.Local }); //每天18点36分 当前时区
//本机示例
RecurringJob.AddOrUpdate<TestHangfireJob>("TestHangfireJob_Test", m => m.Test(), Cron.Minutely, new RecurringJobOptions { TimeZone = TimeZoneInfo.Local });
RecurringJob.AddOrUpdate<TestHangfireJob>("TestHangfireJob_TestAsync", m => m.TestAsync(), Cron.Minutely, new RecurringJobOptions { TimeZone = TimeZoneInfo.Local });
}
}
#endregion
5.2. 若需要使用注入模式使用,参考上述代码本机示例
新建XXXHangfireJob
,定义如下结构代码
#region "测试Hangfire作业"
/// <summary>
/// 测试Hangfire作业
/// </summary>
public class XXXHangfireJob
{
#region "字段"
#region "私有只读-身份认证上下文"
/// <summary>
/// 私有只读-身份认证上下文
/// </summary>
private readonly IIdentityContract _identityContract;
#endregion
#region "私有只读-服务提供者"
/// <summary>
/// 私有只读-服务提供者
/// </summary>
private readonly IServiceProvider _provider;
#endregion
#endregion
#region "属性"
#region "获取 日志对象"
/// <summary>
/// 获取 日志对象
/// </summary>
protected ILogger Logger => _provider.GetLogger(GetType());
#endregion
#endregion
#region "构造函数"
#region "初始化一个测试Hangfire作业的新实例"
/// <summary>
/// 初始化一个测试Hangfire作业 <see cref="XXXHangfireJob"/> 的新实例
/// </summary>
/// <param name="identityContract">身份认证上下文</param>
/// <param name="provider">服务提供者</param>
public XXXHangfireJob(IIdentityContract identityContract, IServiceProvider provider)
{
_identityContract = identityContract;
_provider = provider;
}
#endregion
#endregion
#region "方法"
#region "同步测试方法"
/// <summary>
/// 同步测试方法
/// </summary>
/// <returns></returns>
public void Test()
{
//TODO:Your Coding...
Logger.LogDebug(I18N.T("HangfireTest", "Hangfire Test:{0}", false, DateTime.Now.ToString()));
}
#endregion
#region "异步测试方法"
/// <summary>
/// 异步测试方法
/// </summary>
/// <returns></returns>
public async Task TestAsync()
{
//TODO:Your Coding...
Logger.LogDebug(I18N.T("HangfireTestAsync", "Hangfire TestAsync:{0}", false, DateTime.Now.ToString()));
await Task.CompletedTask;
}
#endregion
#endregion
}
#endregion
- 要禁用Hangfire,设置
Enabled: false
。
交流
QQ群号:863605868 | 微信号:SeonHu |
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
net8.0
- EaCloud.AspNetCore (>= 8.0.0.8)
- Hangfire (>= 1.8.14)
- Hangfire.HttpJob (>= 3.8.5)
- Hangfire.HttpJob.Agent (>= 1.5.1)
- Hangfire.HttpJob.Client (>= 1.2.9)
- Hangfire.MemoryStorage (>= 1.8.1.1)
- Hangfire.Mongo (>= 1.10.7)
- Hangfire.MySqlStorage (>= 2.0.3)
- Hangfire.Oracle.Core (>= 1.2.17)
- Hangfire.PostgreSql (>= 1.20.9)
- HangFire.Redis.StackExchange (>= 1.9.3)
- Hangfire.SQLite (>= 1.4.2)
- Hangfire.SqlServer (>= 1.8.14)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on EaCloud.Hangfire:
Package | Downloads |
---|---|
EaCloud.Pack.Message
EaCloud 消息模块,封装公告讯息收发及记录管理功能。 |
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
8.0.1.9 | 94 | 11/15/2024 |
8.0.1.8 | 93 | 11/13/2024 |
8.0.1.7 | 121 | 10/9/2024 |
8.0.1.6 | 109 | 9/29/2024 |
8.0.1.5 | 132 | 9/13/2024 |
8.0.1.4 | 144 | 8/10/2024 |
8.0.1.3 | 126 | 8/7/2024 |
8.0.1.2 | 121 | 8/7/2024 |
8.0.1.1 | 124 | 8/7/2024 |
8.0.0.9 | 112 | 8/7/2024 |
8.0.0.8 | 75 | 8/5/2024 |
8.0.0.7 | 74 | 8/2/2024 |
8.0.0.6 | 90 | 8/1/2024 |
8.0.0.5 | 80 | 8/1/2024 |
8.0.0.4 | 58 | 7/31/2024 |
8.0.0.3 | 94 | 7/30/2024 |
8.0.0.2 | 107 | 7/25/2024 |
8.0.0.1 | 118 | 7/24/2024 |
7.0.9.4 | 125 | 7/19/2024 |
7.0.9.3 | 147 | 7/11/2024 |
7.0.9.2 | 142 | 7/6/2024 |
7.0.9.1 | 137 | 7/3/2024 |
7.0.8.9 | 153 | 6/28/2024 |
7.0.8.8 | 142 | 6/26/2024 |
7.0.8.7 | 144 | 6/22/2024 |
7.0.8.6 | 150 | 6/14/2024 |
7.0.8.5 | 145 | 5/31/2024 |
7.0.8.4 | 156 | 5/21/2024 |
7.0.8.3 | 167 | 5/21/2024 |
7.0.8.2 | 138 | 5/20/2024 |
7.0.8.1 | 168 | 5/20/2024 |
7.0.7.9 | 148 | 5/15/2024 |
7.0.7.8 | 143 | 5/10/2024 |
7.0.7.7 | 130 | 5/9/2024 |
7.0.7.6 | 129 | 5/9/2024 |
7.0.7.5 | 194 | 5/7/2024 |
7.0.7.4 | 154 | 4/28/2024 |
7.0.7.3 | 170 | 4/26/2024 |
7.0.7.2 | 162 | 4/21/2024 |
7.0.7.1 | 149 | 4/19/2024 |
7.0.6.9 | 159 | 4/15/2024 |
7.0.6.8 | 151 | 4/11/2024 |
7.0.6.7 | 149 | 4/11/2024 |
7.0.6.6 | 184 | 4/7/2024 |
7.0.6.5 | 157 | 4/7/2024 |
7.0.6.4 | 168 | 4/7/2024 |
7.0.6.3 | 161 | 4/7/2024 |
7.0.6.2 | 157 | 4/3/2024 |
7.0.6.1 | 162 | 4/3/2024 |
7.0.5.9 | 172 | 3/27/2024 |
7.0.5.8 | 154 | 3/23/2024 |
7.0.5.7 | 176 | 3/17/2024 |
7.0.5.6 | 178 | 3/17/2024 |
7.0.5.5 | 181 | 3/16/2024 |
7.0.5.4 | 199 | 3/13/2024 |
7.0.5.3 | 168 | 3/13/2024 |
7.0.5.2 | 185 | 3/6/2024 |
7.0.5.1 | 185 | 2/21/2024 |
7.0.4.9 | 173 | 2/21/2024 |
7.0.4.8 | 173 | 2/18/2024 |
7.0.4.7 | 168 | 2/5/2024 |
7.0.4.6 | 178 | 2/1/2024 |
7.0.4.5 | 165 | 1/26/2024 |
7.0.4.4 | 183 | 1/22/2024 |
7.0.4.3 | 176 | 1/17/2024 |
7.0.4.2 | 142 | 1/16/2024 |
7.0.4.1 | 166 | 1/16/2024 |
7.0.3.9 | 167 | 1/15/2024 |
7.0.3.8 | 197 | 1/3/2024 |
7.0.3.7 | 193 | 12/28/2023 |
7.0.3.6 | 152 | 12/27/2023 |
7.0.3.5 | 180 | 12/22/2023 |
7.0.3.4 | 194 | 12/22/2023 |
7.0.3.3 | 207 | 12/13/2023 |
7.0.3.2 | 160 | 12/13/2023 |
7.0.3.1 | 198 | 12/12/2023 |
7.0.2.9 | 213 | 11/26/2023 |
7.0.2.8 | 219 | 11/26/2023 |
7.0.2.7 | 219 | 9/26/2023 |
7.0.2.6 | 192 | 9/25/2023 |
7.0.2.5 | 190 | 9/15/2023 |
7.0.2.4 | 217 | 7/27/2023 |
7.0.2.3 | 230 | 7/22/2023 |
7.0.2.2 | 244 | 7/22/2023 |
7.0.2.1 | 229 | 7/21/2023 |
7.0.1.9 | 211 | 7/21/2023 |
7.0.1.8 | 221 | 7/20/2023 |
7.0.1.7 | 217 | 7/20/2023 |
7.0.1.6 | 272 | 7/4/2023 |
7.0.1.5 | 229 | 6/16/2023 |
7.0.1.4 | 231 | 6/13/2023 |
7.0.1.3 | 267 | 6/8/2023 |
7.0.1.2 | 262 | 6/2/2023 |
7.0.1.1 | 264 | 5/11/2023 |
7.0.0.9 | 260 | 5/10/2023 |
7.0.0.8 | 288 | 5/10/2023 |
7.0.0.7 | 313 | 4/19/2023 |
7.0.0.6 | 314 | 4/18/2023 |
7.0.0.5 | 372 | 3/27/2023 |
7.0.0.4 | 349 | 3/23/2023 |
7.0.0.3 | 395 | 1/31/2023 |
7.0.0.2 | 412 | 1/30/2023 |
7.0.0.1 | 373 | 12/24/2022 |
6.0.2.5 | 541 | 11/16/2022 |
6.0.2.4 | 557 | 11/10/2022 |
6.0.2.3 | 700 | 10/11/2022 |
6.0.2.2 | 740 | 9/23/2022 |
6.0.2.1 | 767 | 8/14/2022 |
6.0.1.9 | 786 | 8/13/2022 |
6.0.1.8 | 815 | 6/6/2022 |
6.0.1.7 | 806 | 5/26/2022 |
6.0.1.6 | 850 | 5/11/2022 |
6.0.1.5 | 874 | 5/10/2022 |
6.0.1.4 | 958 | 4/8/2022 |
6.0.1.3 | 972 | 4/2/2022 |
6.0.1.2 | 986 | 4/2/2022 |
6.0.1.1 | 1,015 | 3/18/2022 |
6.0.0.9 | 971 | 3/5/2022 |
6.0.0.8 | 968 | 2/19/2022 |
6.0.0.7 | 950 | 2/15/2022 |
6.0.0.6 | 973 | 2/14/2022 |
6.0.0.5 | 1,068 | 1/28/2022 |
6.0.0.4 | 1,137 | 1/13/2022 |
6.0.0.3 | 1,118 | 1/12/2022 |
6.0.0.2 | 1,373 | 12/21/2021 |
6.0.0.1 | 1,548 | 12/13/2021 |
5.0.3.7 | 1,945 | 10/16/2021 |
5.0.3.6 | 1,090 | 10/14/2021 |
5.0.3.5 | 1,075 | 10/13/2021 |
5.0.3.4 | 1,235 | 10/8/2021 |
5.0.3.3 | 1,176 | 9/17/2021 |
5.0.3.2 | 1,293 | 9/16/2021 |
5.0.3.1 | 1,192 | 9/15/2021 |
5.0.2.9 | 1,231 | 9/15/2021 |
5.0.2.8 | 1,340 | 8/31/2021 |
5.0.2.7 | 1,301 | 8/28/2021 |
5.0.2.6 | 1,247 | 8/22/2021 |
5.0.2.5 | 1,182 | 8/13/2021 |
5.0.2.4 | 1,157 | 8/13/2021 |
5.0.2.3 | 1,114 | 7/8/2021 |
5.0.2.2 | 1,052 | 7/1/2021 |
5.0.2.1 | 1,166 | 6/16/2021 |
5.0.1.9 | 1,052 | 5/12/2021 |
5.0.1.8 | 960 | 5/9/2021 |
5.0.1.7 | 1,105 | 5/7/2021 |
5.0.1.6 | 1,104 | 4/17/2021 |
5.0.1.5 | 1,041 | 4/16/2021 |
5.0.1.4 | 1,030 | 4/15/2021 |
5.0.1.3 | 1,035 | 4/15/2021 |
5.0.1.2 | 1,087 | 4/12/2021 |