MassTransit RabbitMq 消息集成命令与事件发布
一.MassTransit
MassTransit 是一个免费开源轻量级的.net平台下的消息总线系统。我们将介绍如果使用MassTransit集成我们系统中的事件与命令。项目地址:https://github.com/MassTransit/MassTransit。本文使用一次简单的下订单模拟命令与事件,并通过MassTransit 进行集成。
二.消息产生
客户端通过下订单的动作产生一条placeorder命令,系统处理命令的同时产生一条ordercreated事件。
三.项目
项目的目录结构如下图:
一个事件处理器,一个命令处理器,web为客户端,message定义命令与事件。
MassTransit 通过autofac 注入,nuget添加autofac、MassTransit 、MassTransit.RabbitMQ的程序包
asp.net core mvc的注入配置如下:
public IServiceProvider ConfigureServices(IServiceCollection services) { services.Configure<CookiePolicyOptions>(options => { // This lambda determines whether user consent for non-essential cookies is needed for a given request. options.CheckConsentNeeded = context => true; options.MinimumSameSitePolicy = SameSiteMode.None; }); services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1); var builder = new ContainerBuilder(); builder.Register(c => { return Bus.Factory.CreateUsingRabbitMq(sbc => sbc.Host("localhost", "/", h => { h.Username("guest"); h.Password("guest"); }) ); }) .As<IBusControl>() .As<IBus>() .As<IPublishEndpoint>() .As<ISendEndpointProvider>() .SingleInstance(); builder.Populate(services); container = builder.Build(); return new AutofacServiceProvider(container); }