【优化】hangfire定时任务组件增加配置设置。

This commit is contained in:
jianweie code
2024-07-21 21:51:27 +08:00
parent 1a35fbf07f
commit 6becb8f15b
5 changed files with 72 additions and 10 deletions
@@ -149,6 +149,10 @@ namespace CoreCms.Net.Configuration
#region HangFire定时任务================================================================================
/// <summary>
/// HangFire默认访问路由地址
/// </summary>
public static readonly string HangFireRoutePrefix = AppSettingsHelper.GetContent("HangFire", "RoutePrefix");
/// <summary>
/// 登录账号
/// </summary>
public static readonly string HangFireLogin = AppSettingsHelper.GetContent("HangFire", "Login");
@@ -156,8 +160,10 @@ namespace CoreCms.Net.Configuration
/// 登录密码
/// </summary>
public static readonly string HangFirePassWord = AppSettingsHelper.GetContent("HangFire", "PassWord");
/// <summary>
/// 已经完成的任务过期时间,单位分钟(默认10080,7天时间)
/// </summary>
public static readonly int HangFireJobExpirationTimeOut = AppSettingsHelper.GetContent("HangFire", "JobExpirationTimeOut").ObjToInt(10080);
#endregion
@@ -0,0 +1,51 @@
using Hangfire.States;
using Hangfire.Storage;
using System;
namespace CoreCms.Net.Web.WebApi.Infrastructure
{
/// <summary>
/// 已完成的job设置过期,防止数据无限增长
/// </summary>
public class SucceededStateExpireHandler : IStateHandler
{
/// <summary>
/// 数据过期时间
/// </summary>
public TimeSpan JobExpirationTimeout;
/// <summary>
/// 完成的项目过期状态处理
/// </summary>
/// <param name="jobExpirationTimeout"></param>
public SucceededStateExpireHandler(int jobExpirationTimeout)
{
JobExpirationTimeout = TimeSpan.FromMinutes(jobExpirationTimeout);
}
/// <summary>
/// 状态名称
/// </summary>
public string StateName => SucceededState.StateName;
/// <summary>
/// 应用状态
/// </summary>
/// <param name="context"></param>
/// <param name="transaction"></param>
public void Apply(ApplyStateContext context, IWriteOnlyTransaction transaction)
{
context.JobExpirationTimeout = JobExpirationTimeout;
}
/// <summary>
/// 不应用状态
/// </summary>
/// <param name="context"></param>
/// <param name="transaction"></param>
public void Unapply(ApplyStateContext context, IWriteOnlyTransaction transaction)
{
}
}
}
+5 -1
View File
@@ -198,9 +198,13 @@ var hangfireOptions = new Hangfire.DashboardOptions
IsReadOnlyFunc = _ => false
};
app.UseHangfireDashboard("/job", hangfireOptions); //可以改变Dashboard的url
app.UseHangfireDashboard(AppSettingsConstVars.HangFireRoutePrefix, hangfireOptions);
HangfireDispose.HangfireService();
//设置hangfire定时任务过期时间
GlobalStateHandlers.Handlers.Add(new SucceededStateExpireHandler(AppSettingsConstVars.HangFireJobExpirationTimeOut));
#endregion
//使用 Session
+4 -2
View File
@@ -10,8 +10,10 @@
},
//定时任务管理面板的账户密码
"HangFire": {
"Login": "CoreShop",
"PassWord": "oq9wfbdeasygj647v"
"RoutePrefix": "/job", //路由地址,默认'/job'
"Login": "", //登录账号
"PassWord": "", //登录密码
"JobExpirationTimeOut": "10080" //已经完成的任务过期时间,单位分钟(默认10080,7天时间)
},
//Swagger授权访问设置
"SwaggerConfig": {
+4 -5
View File
@@ -3,7 +3,7 @@
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>核心商城(CoreShop)接口管理</title>
<title>核心商城(CoreShop)系统社区版接口端管理</title>
<meta name="robots" content="noarchive">
<meta name="keywords" content="corecms,CoreShop,核心商城,核心小程序商城系统" />
<meta name="description" content="核心小程序商城系统(CoreShop)基于Asp.net 5.0 开发的支持可视化布局的商城系统、前后端分离,支持分布式部署,拥有分销、团购、直播、秒杀、优惠券、自定义页面等众多营销功能,拥有完整sku和下单流程的完全开源商城,致力于为中小企业打造一个完整、易于维护的开源的电商系统,采用现阶段流行技术实现。后台管理系统包含会员管理、商品管理、订单管理、财务管理、运营管理、多规格管理、内容管理、报表统计、促销设置、分销管理、多门店管理、权限管理、设置等模块。" />
@@ -23,7 +23,7 @@
</style>
</head>
<body>
<div class="top">恭喜您,核心商城(CoreShop)接口端部署成功!!!</div>
<div class="top">恭喜您,核心商城(CoreShop)系统社区版接口端部署成功!!!</div>
<div class="middle">
请访问组件地址测试是否正常:<br />
<p>|- HangFire&nbsp;&nbsp;&nbsp;&nbsp;定制任务 【<a href="/job" target="_blank" class="blue">点击前往</a>】</p>
@@ -31,9 +31,8 @@
<br />
<span class="zhuyi">注意事项:</span><br />
<p>1、以上组件地址支持自定义调整,投产环境下请及时修改或屏蔽;投产环境下可删除此展示页面。</p>
<p>2、『Swagger接口文档』访问路径修改位置为:【Startup.cs】文件第206行左右【代码:c.RoutePrefix = "doc"】,请将doc修改为其他虚拟路径。</p>
<p>3、『HangFire定时任务』面板路径修改位置为:【Startup.cs】文件第256行左右【代码:app.UseHangfireDashboard("/job", options);】,请将job修改为其他虚拟路径。</p>
<p>4、『HangFire定时任务』初始登录账号密码均为:【CoreShop】,修改位置为:【appsettings.json】文件,代码中【HangFire】节点。</p>
<p>2、『Swagger接口文档』访问路径,登录账号密码均自行设置,修改位置为:【appsettings.json】文件,代码中【SwaggerConfig】节点。</p>
<p>4、『HangFire定时任务』访问路径,登录账号密码均自行设置,修改位置为:【appsettings.json】文件,代码中【HangFire】节点。</p>
<p>5、如果无法访问接口,请检查【1、数据库配置是否正常】【2、Redis是否配置正常并可正常链接使用】【3、Mysql数据库请保持5.7+版本】【4、站点日志文件夹写入权限】。</p>
<p>6、如果第三方请求接口服务获取不到数据,Debug提示【Access-Control-Allow-Origin】的错误,表示为跨域问题,请打开【appsettings.json】文件在【Cors】节点设置请求白名单。</p>
</div>