feat: 支持hangfire

This commit is contained in:
橙子
2024-11-15 20:24:17 +08:00
parent 0bf53a1c0d
commit 644045b307
4 changed files with 51 additions and 46 deletions

View File

@@ -1,13 +1,12 @@
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using Quartz; using Volo.Abp.BackgroundWorkers.Hangfire;
using Volo.Abp.BackgroundWorkers.Quartz;
using Yi.Framework.DigitalCollectibles.Domain.Managers; using Yi.Framework.DigitalCollectibles.Domain.Managers;
namespace Yi.Framework.DigitalCollectibles.Application.Jobs; namespace Yi.Framework.DigitalCollectibles.Application.Jobs;
/// <summary> /// <summary>
/// 自动下架商品 /// 自动下架商品
/// </summary> /// </summary>
public class AutoPassInGoodsJob: QuartzBackgroundWorkerBase public class AutoPassInGoodsJob: HangfireBackgroundWorkerBase
{ {
private readonly MarketManager _marketManager; private readonly MarketManager _marketManager;
private readonly ILogger<AutoPassInGoodsJob> _logger; private readonly ILogger<AutoPassInGoodsJob> _logger;
@@ -15,23 +14,25 @@ public class AutoPassInGoodsJob: QuartzBackgroundWorkerBase
{ {
_marketManager = marketManager; _marketManager = marketManager;
_logger = logger; _logger = logger;
JobDetail = JobBuilder.Create<AutoPassInGoodsJob>().WithIdentity(nameof(AutoPassInGoodsJob)) RecurringJobId = "交易市场自动流拍";
.Build();
//每小时,第10分钟执行一次 //每小时,第10分钟执行一次
Trigger = TriggerBuilder.Create().WithIdentity(nameof(AutoPassInGoodsJob)) CronExpression = "0 10 * * * ?";
// .WithSimpleSchedule((builer) => //
// { // JobDetail = JobBuilder.Create<AutoPassInGoodsJob>().WithIdentity(nameof(AutoPassInGoodsJob))
// builer.WithIntervalInHours(10); // .Build();
// }) //
// .StartNow() // //每小时,第10分钟执行一次
.WithCronSchedule("0 10 * * * ?") // Trigger = TriggerBuilder.Create().WithIdentity(nameof(AutoPassInGoodsJob))
.Build(); // // .WithSimpleSchedule((builer) =>
// // {
// // builer.WithIntervalInHours(10);
// // })
// // .StartNow()
// .WithCronSchedule("0 10 * * * ?")
// .Build();
} }
public override async Task DoWorkAsync(CancellationToken cancellationToken = new CancellationToken())
public override async Task Execute(IJobExecutionContext context)
{ {
await _marketManager.AutoPassInGoodsAsync(); await _marketManager.AutoPassInGoodsAsync();
} }
} }

View File

@@ -1,5 +1,4 @@
using Quartz; using Volo.Abp.BackgroundWorkers.Hangfire;
using Volo.Abp.BackgroundWorkers.Quartz;
using Yi.Framework.DigitalCollectibles.Domain.Managers; using Yi.Framework.DigitalCollectibles.Domain.Managers;
namespace Yi.Framework.DigitalCollectibles.Application.Jobs; namespace Yi.Framework.DigitalCollectibles.Application.Jobs;
@@ -7,21 +6,26 @@ namespace Yi.Framework.DigitalCollectibles.Application.Jobs;
/// <summary> /// <summary>
/// 自动刷新填满矿池 /// 自动刷新填满矿池
/// </summary> /// </summary>
public class AutoRefreshMiningPoolJob : QuartzBackgroundWorkerBase public class AutoRefreshMiningPoolJob : HangfireBackgroundWorkerBase
{ {
private readonly MiningPoolManager _miningPoolManager; private readonly MiningPoolManager _miningPoolManager;
public AutoRefreshMiningPoolJob(MiningPoolManager miningPoolManager) public AutoRefreshMiningPoolJob(MiningPoolManager miningPoolManager)
{ {
_miningPoolManager = miningPoolManager; _miningPoolManager = miningPoolManager;
JobDetail = JobBuilder.Create<AutoRefreshMiningPoolJob>().WithIdentity(nameof(AutoRefreshMiningPoolJob))
.Build();
//每天早上10点执行一次
Trigger = TriggerBuilder.Create().WithIdentity(nameof(AutoRefreshMiningPoolJob))
.WithCronSchedule("0 0 10 * * ?")
.Build();
RecurringJobId = "刷新矿池和用户限制";
//每天早上10点执行一次
CronExpression = "0 0 10 * * ?";
//
// JobDetail = JobBuilder.Create<AutoRefreshMiningPoolJob>().WithIdentity(nameof(AutoRefreshMiningPoolJob))
// .Build();
//
// //每天早上10点执行一次
// Trigger = TriggerBuilder.Create().WithIdentity(nameof(AutoRefreshMiningPoolJob))
// .WithCronSchedule("0 0 10 * * ?")
// .Build();
//
// Trigger = TriggerBuilder.Create().WithIdentity(nameof(AutoRefreshMiningPoolJob)) // Trigger = TriggerBuilder.Create().WithIdentity(nameof(AutoRefreshMiningPoolJob))
// .WithSimpleSchedule((schedule) => // .WithSimpleSchedule((schedule) =>
@@ -31,10 +35,9 @@ public class AutoRefreshMiningPoolJob : QuartzBackgroundWorkerBase
// .StartNow() // .StartNow()
// .Build(); // .Build();
} }
public override async Task DoWorkAsync(CancellationToken cancellationToken = new CancellationToken())
public override async Task Execute(IJobExecutionContext context)
{ {
//刷新矿池 //刷新矿池
await _miningPoolManager.RefreshMiningPoolAsync(); await _miningPoolManager.RefreshMiningPoolAsync();
//刷新用户限制 //刷新用户限制

View File

@@ -1,16 +1,13 @@
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using Quartz; using Volo.Abp.BackgroundWorkers.Hangfire;
using Volo.Abp.BackgroundWorkers.Quartz;
using Yi.Framework.DigitalCollectibles.Domain.Entities;
using Yi.Framework.DigitalCollectibles.Domain.Managers; using Yi.Framework.DigitalCollectibles.Domain.Managers;
using Yi.Framework.SqlSugarCore.Abstractions;
namespace Yi.Framework.DigitalCollectibles.Application.Jobs; namespace Yi.Framework.DigitalCollectibles.Application.Jobs;
/// <summary> /// <summary>
/// 处理挂机挖矿定时任务 /// 处理挂机挖矿定时任务
/// </summary> /// </summary>
public class OnHookAutoMiningJob : QuartzBackgroundWorkerBase public class OnHookAutoMiningJob : HangfireBackgroundWorkerBase
{ {
private readonly MiningPoolManager _miningPoolManager; private readonly MiningPoolManager _miningPoolManager;
private readonly ILogger<OnHookAutoMiningJob> _logger; private readonly ILogger<OnHookAutoMiningJob> _logger;
@@ -19,17 +16,21 @@ public class OnHookAutoMiningJob : QuartzBackgroundWorkerBase
{ {
_miningPoolManager = miningPoolManager; _miningPoolManager = miningPoolManager;
_logger = logger; _logger = logger;
JobDetail = JobBuilder.Create<OnHookAutoMiningJob>().WithIdentity(nameof(OnHookAutoMiningJob))
.Build(); RecurringJobId = "自动挂机挖矿";
//每小时执行一次 //每小时执行一次
Trigger = TriggerBuilder.Create().WithIdentity(nameof(OnHookAutoMiningJob)) CronExpression = "0 0 * * * ?";
// .WithCronSchedule("10 * * * * ?") //
.WithCronSchedule("0 0 * * * ?") // JobDetail = JobBuilder.Create<OnHookAutoMiningJob>().WithIdentity(nameof(OnHookAutoMiningJob))
.Build(); // .Build();
//
// //每小时执行一次
// Trigger = TriggerBuilder.Create().WithIdentity(nameof(OnHookAutoMiningJob))
// // .WithCronSchedule("10 * * * * ?")
// .WithCronSchedule("0 0 * * * ?")
// .Build();
} }
public override async Task DoWorkAsync(CancellationToken cancellationToken = new CancellationToken())
public override async Task Execute(IJobExecutionContext context)
{ {
await _miningPoolManager.OnHookMiningAsync(); await _miningPoolManager.OnHookMiningAsync();
} }

View File

@@ -3,11 +3,11 @@
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\..\..\framework\Yi.Framework.BackgroundWorkers.Hangfire\Yi.Framework.BackgroundWorkers.Hangfire.csproj" />
<ProjectReference Include="..\..\..\framework\Yi.Framework.Ddd.Application\Yi.Framework.Ddd.Application.csproj" /> <ProjectReference Include="..\..\..\framework\Yi.Framework.Ddd.Application\Yi.Framework.Ddd.Application.csproj" />
<ProjectReference Include="..\Yi.Framework.DigitalCollectibles.Application.Contracts\Yi.Framework.DigitalCollectibles.Application.Contracts.csproj" /> <ProjectReference Include="..\Yi.Framework.DigitalCollectibles.Application.Contracts\Yi.Framework.DigitalCollectibles.Application.Contracts.csproj" />
<ProjectReference Include="..\Yi.Framework.DigitalCollectibles.Domain\Yi.Framework.DigitalCollectibles.Domain.csproj" /> <ProjectReference Include="..\Yi.Framework.DigitalCollectibles.Domain\Yi.Framework.DigitalCollectibles.Domain.csproj" />
<PackageReference Include="Volo.Abp.BackgroundWorkers.Quartz" Version="$(AbpVersion)" />
</ItemGroup> </ItemGroup>