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);

        }

下载地址

猜你喜欢

转载自www.cnblogs.com/RunStone/p/9896582.html