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(); //cfg.AddConsumer(); //cfg.AddConsumer(); //cfg.ConfigureMediator((context, cfg) => cfg.UseHttpContextScopeFilter(context)); }); //添加 MassTransit 和 InMemory 传输 services.AddMassTransit(cfg => { // 自动扫描程序集中的消费者并进行注册 cfg.AddConsumers(typeof(UserSiteSurveySubmitedEventConsumer).Assembly); //// 注册消费者 //cfg.AddConsumer(); // 替换为你的消费者类 //cfg.AddConsumer(); 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 } } }