配合hangfire 周期任务暂时有问题 --待解决

IRC_NewDev
hang 2024-10-17 13:37:57 +08:00
parent a03c11ae9d
commit f1acb787f5
9 changed files with 65 additions and 31 deletions

View File

@ -207,7 +207,7 @@ app.UseExceptionHandler(o => { });
app.UseIRacisHostStaticFileStore(env); app.UseIRacisHostStaticFileStore(env);
//本地化 //本地化
app.UseLocalization(app.Services); await app.UseLocalization(app.Services);
app.UseForwardedHeaders(); app.UseForwardedHeaders();

View File

@ -1,18 +1,24 @@
using IRaCIS.Core.Domain.Share; using IRaCIS.Core.Application.Helper;
using IRaCIS.Core.Domain.Models;
using IRaCIS.Core.Domain.Share;
using IRaCIS.Core.Infra.EFCore;
using IRaCIS.Core.Infrastructure.Extention; using IRaCIS.Core.Infrastructure.Extention;
using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Builder;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Localization; using Microsoft.Extensions.Localization;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Globalization; using System.Globalization;
using System.Linq;
using System.Threading.Tasks;
namespace IRaCIS.Core.API namespace IRaCIS.Core.API
{ {
public static class LocalizationConfig public static class LocalizationConfig
{ {
public static void UseLocalization(this IApplicationBuilder app,IServiceProvider serviceProvider) public static async Task UseLocalization(this IApplicationBuilder app,IServiceProvider serviceProvider)
{ {
var supportedCultures = new List<CultureInfo> var supportedCultures = new List<CultureInfo>
{ {
@ -38,6 +44,24 @@ namespace IRaCIS.Core.API
//设置国际化I18n //设置国际化I18n
var localizer = serviceProvider.GetRequiredService<IStringLocalizer>(); var localizer = serviceProvider.GetRequiredService<IStringLocalizer>();
I18n.SetLocalizer(localizer); I18n.SetLocalizer(localizer);
//初始化国际化
var _internationalizationRepository = serviceProvider.GetRequiredService<IRepository<Internationalization>>();
//查询数据库的数据
var toJsonList = await _internationalizationRepository.Where(t => t.InternationalizationType == 1).Select(t => new IRCGlobalInfoDTO()
{
Code = t.Code,
Value = t.Value,
ValueCN = t.ValueCN,
Description = t.Description
}).ToListAsync();
await InternationalizationHelper.BatchAddJsonKeyValueAsync(toJsonList);
} }
} }
} }

View File

@ -2,6 +2,7 @@
using IRaCIS.Core.Domain.BaseModel; using IRaCIS.Core.Domain.BaseModel;
using MassTransit; using MassTransit;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using System;
namespace IRaCIS.Core.API namespace IRaCIS.Core.API
{ {
@ -30,12 +31,13 @@ namespace IRaCIS.Core.API
// 自动扫描程序集中的消费者并进行注册 // 自动扫描程序集中的消费者并进行注册
cfg.AddConsumers(typeof(UserSiteSurveySubmitedEventConsumer).Assembly); cfg.AddConsumers(typeof(UserSiteSurveySubmitedEventConsumer).Assembly);
//// 注册消费者
//cfg.AddConsumer<AddSubjectTriggerConsumer>(); // 替换为你的消费者类
//cfg.AddConsumer<AddSubjectTriggerConsumer2>(); //Uri schedulerEndpoint = new Uri("queue:scheduler");
//cfg.AddMessageScheduler(schedulerEndpoint);
cfg.AddPublishMessageScheduler(); cfg.AddPublishMessageScheduler();
//cfg.AddHangfireConsumers(); cfg.AddHangfireConsumers();
@ -45,8 +47,11 @@ namespace IRaCIS.Core.API
//https://github.com/MassTransit/Sample-Hangfire/blob/master/src/Sample.Hangfire.Console/Program.cs //https://github.com/MassTransit/Sample-Hangfire/blob/master/src/Sample.Hangfire.Console/Program.cs
cfg.UsePublishMessageScheduler(); cfg.UsePublishMessageScheduler();
//cfg.UseMessageScheduler(schedulerEndpoint);
//使用 Hangfire 进行消息调度 //使用 Hangfire 进行消息调度
cfg.UseHangfireScheduler(); //cfg.UseHangfireScheduler();
cfg.UseConsumeFilter(typeof(CultureInfoFilter<>), context, cfg.UseConsumeFilter(typeof(CultureInfoFilter<>), context,
x => x.Include(type => type.IsAssignableTo(typeof(DomainEvent)))); x => x.Include(type => type.IsAssignableTo(typeof(DomainEvent))));

View File

@ -1,9 +1,11 @@
using Hangfire; using Hangfire;
using Hangfire.Storage; using Hangfire.Storage;
using IRaCIS.Core.Application.Helper; using IRaCIS.Core.Application.Helper;
using IRaCIS.Core.Application.MassTransit.Consumer;
using IRaCIS.Core.Domain.Models; using IRaCIS.Core.Domain.Models;
using IRaCIS.Core.Domain.Share; using IRaCIS.Core.Domain.Share;
using MassTransit; using MassTransit;
using MassTransit.Mediator;
using MassTransit.Scheduling; using MassTransit.Scheduling;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
@ -18,7 +20,8 @@ namespace IRaCIS.Core.Application.Service.BackGroundJob
public class IRaCISCHangfireJob(ILogger<IRaCISCHangfireJob> _logger, public class IRaCISCHangfireJob(ILogger<IRaCISCHangfireJob> _logger,
IRepository<Internationalization> _internationalizationRepository, IRepository<Internationalization> _internationalizationRepository,
IRepository<TrialEmailNoticeConfig> _trialEmailNoticeConfigRepository, IRepository<TrialEmailNoticeConfig> _trialEmailNoticeConfigRepository,
IMessageScheduler _IMessageScheduler IMessageScheduler _iMessageScheduler,
IBus _bus
) : IIRaCISHangfireJob ) : IIRaCISHangfireJob
{ {
public static string JsonFileFolder = Path.Combine(AppContext.BaseDirectory, StaticData.Folder.Resources); public static string JsonFileFolder = Path.Combine(AppContext.BaseDirectory, StaticData.Folder.Resources);
@ -28,19 +31,7 @@ namespace IRaCIS.Core.Application.Service.BackGroundJob
{ {
_logger.LogInformation("项目启动 hangfire 任务初始化 执行开始~"); _logger.LogInformation("项目启动 hangfire 任务初始化 执行开始~");
//初始化国际化
//查询数据库的数据
var toJsonList = await _internationalizationRepository.Where(t => t.InternationalizationType == 1).Select(t => new IRCGlobalInfoDTO()
{
Code = t.Code,
Value = t.Value,
ValueCN = t.ValueCN,
Description = t.Description
}).ToListAsync();
await InternationalizationHelper.BatchAddJsonKeyValueAsync(toJsonList);
//创建邮件定时任务 //创建邮件定时任务
await InitSysAndTrialCronJobAsync(); await InitSysAndTrialCronJobAsync();
@ -80,7 +71,9 @@ namespace IRaCIS.Core.Application.Service.BackGroundJob
break; break;
} }
//var schedulerEndpoint = await _bus.GetSendEndpoint(new Uri("queue:hangfire"));
//await schedulerEndpoint.ScheduleRecurringSend<QCImageQuestionSchedule>(new Uri("queue:mt-message-queue"), new QCImageQuestionSchedule() { ScheduleId = jobId, CronExpression = "0 0/1 * 1/1 * ? *" }, new PollExternalSystem { });
//await schedulerEndpoint.ScheduleRecurringSend<QCImageQuestionSchedule>(new Uri("queue:hangfire"), new QCImageQuestionSchedule() { ScheduleId = jobId + jobId, CronExpression = "0 0/1 * 1/1 * ? *" }, new PollExternalSystem { });
HangfireJobHelper.AddOrUpdateTrialCronJob(jobId, task.TrialId, task.BusinessScenarioEnum, task.EmailCron); HangfireJobHelper.AddOrUpdateTrialCronJob(jobId, task.TrialId, task.BusinessScenarioEnum, task.EmailCron);
@ -88,7 +81,7 @@ namespace IRaCIS.Core.Application.Service.BackGroundJob
} }
public class PollExternalSystem { }
} }

View File

@ -12902,14 +12902,14 @@
加急的医学反馈任务 通知MIM 加急的医学反馈任务 通知MIM
</summary> </summary>
</member> </member>
<member name="M:IRaCIS.Core.Application.MassTransit.Consumer.UrgentMedicalReviewAddedEventConsumer.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.User},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TaskMedicalReview},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingQuestionCriterionTrial},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.VisitTask},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Dictionary},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.EmailNoticeConfig},Microsoft.Extensions.Options.IOptionsMonitor{IRaCIS.Core.Domain.Share.SystemEmailSendConfig})"> <member name="M:IRaCIS.Core.Application.MassTransit.Consumer.UrgentMedicalReviewAddedEventConsumer.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.User},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TaskMedicalReview},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.SubjectVisit},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingQuestionCriterionTrial},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.VisitTask},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Dictionary},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.EmailNoticeConfig},Microsoft.Extensions.Options.IOptionsMonitor{IRaCIS.Core.Domain.Share.SystemEmailSendConfig})">
<summary> <summary>
加急的医学反馈任务 通知MIM 加急的医学反馈任务 通知MIM
</summary> </summary>
</member> </member>
<member name="M:IRaCIS.Core.Application.MassTransit.Consumer.UrgentMedicalReviewAddedEventConsumer.Consume(MassTransit.ConsumeContext{IRaCIS.Core.Domain.UrgentMedicalReviewAddedEvent})"> <member name="M:IRaCIS.Core.Application.MassTransit.Consumer.UrgentMedicalReviewAddedEventConsumer.Consume(MassTransit.ConsumeContext{IRaCIS.Core.Domain.UrgentMedicalReviewAddedEvent})">
<summary> <summary>
加急的医学反馈任务 通知MIM 加急的医学反馈任务 通知MIM (026,027)
</summary> </summary>
<param name="context"></param> <param name="context"></param>
<returns></returns> <returns></returns>

View File

@ -107,7 +107,7 @@ public class UrgentMedicalReviewAddedEventConsumer(
dictionValue[0], // 任务类型 {5} dictionValue[0], // 任务类型 {5}
//dictionValue[1], // 阅片人是否同意 {6} //dictionValue[1], // 阅片人是否同意 {6}
dictionValue[2], // 审核状态 {6} dictionValue[2], // 审核状态 {6}
dictionValue[3], // 是否加急 {7} dictionValue[3] // 是否加急 {7}
); );

View File

@ -70,7 +70,7 @@ public class TestMasstransitService : BaseService
await _mediatorScoped.Publish(new MasstransiTestCommand { value = "message at " + DateTime.Now.ToString() }); await _mediatorScoped.Publish(new MasstransiTestCommand { value = "message at " + DateTime.Now.ToString() });
//await _scheduler.SchedulePublish(DateTime.Now.AddSeconds(10), new MasstransitHangfireTest() { value = "message at " + DateTime.Now.ToString() }); await _scheduler.SchedulePublish(DateTime.Now.AddSeconds(10), new MasstransiTestCommand() { value = "message at " + DateTime.Now.ToString() });
return ResponseOutput.Ok(); return ResponseOutput.Ok();
} }

View File

@ -1,4 +1,5 @@
using MassTransit; using IRaCIS.Core.Application.MassTransit.Command;
using MassTransit;
using MassTransit.Scheduling; using MassTransit.Scheduling;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
@ -22,9 +23,9 @@ public abstract class IRCRecurringSchedule :
public string TimeZoneId { get; protected set; } public string TimeZoneId { get; protected set; }
public DateTimeOffset StartTime { get; protected set; } public DateTimeOffset StartTime { get; protected set; }
public DateTimeOffset? EndTime { get; protected set; } public DateTimeOffset? EndTime { get; protected set; }
public string ScheduleId { get; private set; } public string ScheduleId { get; set; }
public string ScheduleGroup { get; private set; } public string ScheduleGroup { get; private set; }
public string CronExpression { get; protected set; } public string CronExpression { get; set; }
public string Description { get; protected set; } public string Description { get; protected set; }
} }
@ -53,4 +54,15 @@ public class ImageQCSchedule : IRCRecurringSchedule
} }
public class QCImageQuestionScheduleConsumer : IConsumer<QCImageQuestionSchedule>
{
public Task Consume(ConsumeContext<QCImageQuestionSchedule> context)
{
Console.WriteLine(DateTime.Now);
return Task.CompletedTask;
}
}

View File

@ -78,7 +78,7 @@ steps:
trigger: trigger:
branch: branch:
- Test_IRC_Net8 - Test_IRC_Net8—_SCP_Disable
--- ---
kind: pipeline kind: pipeline