From 91a6f20dba1ab05ff57504c831863c504b08722a Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Tue, 27 Jun 2023 17:04:14 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8E=BB=E6=8E=89hangfire=20=20=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0quartZ=20=20=E6=96=B9=E4=BE=BF=E9=83=A8=E7=BD=B2?= =?UTF-8?q?=EF=BC=8C=E5=85=8D=E5=BE=97=E9=9C=80=E8=A6=81=E4=B8=A4=E4=B8=AA?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- IRaCIS.Core.API/IRaCIS.Core.API.csproj | 2 + IRaCIS.Core.API/Startup.cs | 4 +- .../_ServiceExtensions/QuartZSetup.cs | 54 +++++++++---------- .../CacheTrialStatusQuartZJob.cs | 38 +++++++++---- .../IRaCIS.Core.Application.xml | 29 ++++++++++ 5 files changed, 89 insertions(+), 38 deletions(-) diff --git a/IRaCIS.Core.API/IRaCIS.Core.API.csproj b/IRaCIS.Core.API/IRaCIS.Core.API.csproj index 6f94ee5b8..c6af611a4 100644 --- a/IRaCIS.Core.API/IRaCIS.Core.API.csproj +++ b/IRaCIS.Core.API/IRaCIS.Core.API.csproj @@ -86,6 +86,8 @@ + + diff --git a/IRaCIS.Core.API/Startup.cs b/IRaCIS.Core.API/Startup.cs index 6fafd9402..92d6dd52f 100644 --- a/IRaCIS.Core.API/Startup.cs +++ b/IRaCIS.Core.API/Startup.cs @@ -114,7 +114,7 @@ namespace IRaCIS.Core.API //services.AddDistributedMemoryCache(); // hangfire 定时任务框架 有界面,更友好~ - services.AddhangfireSetup(_configuration); + //services.AddhangfireSetup(_configuration); // QuartZ 定时任务框架 使用了hangfire 暂时不用,后续需要可以打开,已经配好 services.AddQuartZSetup(_configuration); @@ -181,7 +181,7 @@ namespace IRaCIS.Core.API app.UseLogDashboard("/LogDashboard"); //hangfire - app.UseHangfireConfig(env); + //app.UseHangfireConfig(env); ////暂时废弃 //app.UseHttpReports(); diff --git a/IRaCIS.Core.API/_ServiceExtensions/QuartZSetup.cs b/IRaCIS.Core.API/_ServiceExtensions/QuartZSetup.cs index bd48c49ab..2f42e8f7c 100644 --- a/IRaCIS.Core.API/_ServiceExtensions/QuartZSetup.cs +++ b/IRaCIS.Core.API/_ServiceExtensions/QuartZSetup.cs @@ -1,6 +1,8 @@ 锘 +using IRaCIS.Application.Services.BackGroundJob; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; +using Quartz; namespace IRaCIS.Core.API { @@ -8,37 +10,35 @@ namespace IRaCIS.Core.API { public static void AddQuartZSetup(this IServiceCollection services, IConfiguration configuration) { - //services.AddTransient(); + services.AddTransient(); - //services.AddQuartz(q => - //{ - // // base quartz scheduler, job and trigger configuration + services.AddQuartz(q => + { + // base quartz scheduler, job and trigger configuration - // // as of 3.3.2 this also injects scoped services (like EF DbContext) without problems - // q.UseMicrosoftDependencyInjectionJobFactory(); + // as of 3.3.2 this also injects scoped services (like EF DbContext) without problems + q.UseMicrosoftDependencyInjectionJobFactory(); - // // 鍩烘湰Quartz璋冨害鍣ㄣ佷綔涓氬拰瑙﹀彂鍣ㄩ厤缃 - // var jobKey = new JobKey("RegularTrialWork", "regularWorkGroup"); - // q.AddJob(jobKey, j => j - // .WithDescription("Trial regular work") - // ); - // q.AddTrigger(t => t - // .WithIdentity("TrialStatusTrigger") - // .ForJob(jobKey) - // //.StartNow() - // //.WithSimpleSchedule(x => x.WithInterval(TimeSpan.FromSeconds(15))//寮濮嬬鏁 15s - // // .RepeatForever())//鎸佺画宸ヤ綔 - // .WithCronSchedule("0 0 0/2 * * ?")//姣忓皬鏃舵墽琛屼竴娆 - // .WithDescription("My regular trial work trigger") - // ); - //}); + // 鍩烘湰Quartz璋冨害鍣ㄣ佷綔涓氬拰瑙﹀彂鍣ㄩ厤缃 + var jobKey = new JobKey("RegularTrialWork", "regularWorkGroup"); + q.AddJob(jobKey, j => j + .WithDescription("Trial regular work") + ); + q.AddTrigger(t => t + .WithIdentity("TrialStatusTrigger") + .ForJob(jobKey) + + .WithCronSchedule("0 0 * * * ?") + .WithDescription("My regular trial work trigger") + ); + }); - //// ASP.NET Core hosting - //services.AddQuartzServer(options => - //{ - // // when shutting down we want jobs to complete gracefully - // options.WaitForJobsToComplete = true; - //}); + // ASP.NET Core hosting + services.AddQuartzHostedService(options => + { + // when shutting down we want jobs to complete gracefully + options.WaitForJobsToComplete = true; + }); } } diff --git a/IRaCIS.Core.Application/BackGroundJob/CacheTrialStatusQuartZJob.cs b/IRaCIS.Core.Application/BackGroundJob/CacheTrialStatusQuartZJob.cs index dcc0f40ac..e3be27479 100644 --- a/IRaCIS.Core.Application/BackGroundJob/CacheTrialStatusQuartZJob.cs +++ b/IRaCIS.Core.Application/BackGroundJob/CacheTrialStatusQuartZJob.cs @@ -7,6 +7,7 @@ using IRaCIS.Core.Infra.EFCore; using IRaCIS.Core.Domain.Models; using Microsoft.Extensions.Logging; using Quartz; +using IRaCIS.Core.Domain.Share; namespace IRaCIS.Application.Services.BackGroundJob { @@ -17,36 +18,55 @@ namespace IRaCIS.Application.Services.BackGroundJob private readonly IRepository _trialRepository; private readonly IEasyCachingProvider _provider; private readonly ILogger _logger; + private readonly IRepository _systemAnonymizationRepository; - public CacheTrialStatusQuartZJob(IRepository trialRepository, IEasyCachingProvider provider,ILogger logger) + public CacheTrialStatusQuartZJob(IRepository trialRepository, IEasyCachingProvider provider,ILogger logger, IRepository systemAnonymizationRepository) { _trialRepository = trialRepository; _provider = provider; _logger = logger; + _systemAnonymizationRepository = systemAnonymizationRepository; } - public Task Execute(IJobExecutionContext context) + public async Task Execute(IJobExecutionContext context) { _logger.LogInformation($"寮濮嬫墽琛孮uartZ瀹氭椂浠诲姟浣滀笟"); try { - var list = _trialRepository.Select(t => new { TrialId = t.Id, TrialStatusStr = t.TrialStatusStr }) - .ToList(); + await MemoryCacheTrialStatus(); + + await MemoryCacheAnonymizeData(); - list.ForEach(t => _provider.Set(t.TrialId.ToString(), t.TrialStatusStr, TimeSpan.FromDays(1))); - } catch (Exception e) { _logger.LogError($" 鏌ヨ鍜岀紦瀛樿繃绋嬪嚭鐜板紓甯"+e.Message); } _logger.LogInformation("QuartZ瀹氭椂浠诲姟浣滀笟缁撴潫"); - return Task.CompletedTask; } - - + public async Task MemoryCacheTrialStatus() + { + var list = await _trialRepository.Select(t => new { TrialId = t.Id, TrialStatusStr = t.TrialStatusStr }) + .ToListAsync(); + + list.ForEach(t => _provider.Set(t.TrialId.ToString(), t.TrialStatusStr, TimeSpan.FromDays(7))); + + } + + public async Task MemoryCacheAnonymizeData() + { + var systemAnonymizationList = await _systemAnonymizationRepository.Where(t => t.IsEnable).ToListAsync(); + + _provider.Set(StaticData.Anonymize.Anonymize_AddFixedFiled, systemAnonymizationList.Where(t => t.IsAdd && t.IsFixed).ToList(), TimeSpan.FromDays(7)); + _provider.Set(StaticData.Anonymize.Anonymize_AddIRCInfoFiled, systemAnonymizationList.Where(t => t.IsAdd && t.IsFixed == false).ToList(), TimeSpan.FromDays(7)); + _provider.Set(StaticData.Anonymize.Anonymize_FixedField, systemAnonymizationList.Where(t => t.IsAdd == false && t.IsFixed).ToList(), TimeSpan.FromDays(7)); + _provider.Set(StaticData.Anonymize.Anonymize_IRCInfoField, systemAnonymizationList.Where(t => t.IsAdd == false && t.IsFixed == false).ToList(), TimeSpan.FromDays(7)); + } + + + } } \ No newline at end of file diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml index 4a10fe0d5..e9b41531c 100644 --- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml +++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml @@ -680,6 +680,11 @@ InternationalizationService + + + PublishLogService + + TrialEmailNoticeConfigService @@ -2663,6 +2668,16 @@ + + + VisitId + + + + + VisitId + + 鏄惁搴旂敤 @@ -7975,6 +7990,15 @@ InternationalizationAddOrEdit 鍒楄〃鏌ヨ鍙傛暟妯″瀷 + + PublishLogView 鍒楄〃瑙嗗浘妯″瀷 + + + PublishLogQuery 鍒楄〃鏌ヨ鍙傛暟妯″瀷 + + + PublishLogAddOrEdit 鍒楄〃鏌ヨ鍙傛暟妯″瀷 + TrialEmailNoticeConfigView 鍒楄〃瑙嗗浘妯″瀷 @@ -8840,6 +8864,11 @@ IInternationalizationService + + + IPublishLogService + + ITrialEmailNoticeConfigService