67 lines
2.4 KiB
C#
67 lines
2.4 KiB
C#
using IRaCIS.Core.Application.MassTransit.Consumer;
|
||
using IRaCIS.Core.Domain.BaseModel;
|
||
using MassTransit;
|
||
using Microsoft.Extensions.DependencyInjection;
|
||
|
||
namespace IRaCIS.Core.API
|
||
{
|
||
public static class MassTransitSetup
|
||
{
|
||
public static void AddMassTransitSetup(this IServiceCollection services)
|
||
{
|
||
|
||
|
||
#region MassTransit
|
||
//masstransit组件 也支持MediatR 中介者模式,但是支持分布式,考虑后续,所以在次替代MediatR
|
||
//参考链接:https://masstransit.io/documentation/concepts/mediator#scoped-mediator
|
||
services.AddMediator(cfg =>
|
||
{
|
||
cfg.AddConsumers(typeof(UserSiteSurveySubmitedEventConsumer).Assembly);
|
||
|
||
//cfg.AddConsumer<ConsistencyCheckConsumer>();
|
||
//cfg.AddConsumer<AddSubjectTriggerConsumer>();
|
||
//cfg.AddConsumer<AddSubjectTriggerConsumer2>();
|
||
//cfg.ConfigureMediator((context, cfg) => cfg.UseHttpContextScopeFilter(context));
|
||
});
|
||
|
||
//添加 MassTransit 和 InMemory 传输
|
||
services.AddMassTransit(cfg =>
|
||
{
|
||
// 自动扫描程序集中的消费者并进行注册
|
||
cfg.AddConsumers(typeof(UserSiteSurveySubmitedEventConsumer).Assembly);
|
||
|
||
//// 注册消费者
|
||
//cfg.AddConsumer<AddSubjectTriggerConsumer>(); // 替换为你的消费者类
|
||
//cfg.AddConsumer<AddSubjectTriggerConsumer2>();
|
||
|
||
cfg.AddPublishMessageScheduler();
|
||
//cfg.AddHangfireConsumers();
|
||
|
||
|
||
|
||
// 使用 InMemory 作为消息传递机制
|
||
cfg.UsingInMemory((context, cfg) =>
|
||
{
|
||
//https://github.com/MassTransit/Sample-Hangfire/blob/master/src/Sample.Hangfire.Console/Program.cs
|
||
cfg.UsePublishMessageScheduler();
|
||
|
||
//使用 Hangfire 进行消息调度
|
||
cfg.UseHangfireScheduler();
|
||
|
||
cfg.UseConsumeFilter(typeof(CultureInfoFilter<>), context,
|
||
x => x.Include(type => type.IsAssignableTo(typeof(DomainEvent))));
|
||
|
||
|
||
// 这里可以进行额外的配置
|
||
cfg.ConfigureEndpoints(context); // 自动配置所有消费者的端点
|
||
|
||
});
|
||
});
|
||
|
||
#endregion
|
||
|
||
|
||
}
|
||
}
|
||
}
|