【问题标题】:How to use MassTransit Event Bus in a ASP.NET Core Web API?如何在 ASP.NET Core Web API 中使用 MassTransit 事件总线?
【发布时间】:2018-12-22 23:35:56
【问题描述】:

按照https://masstransit-project.com/usage/configuration.html的指令配置MassTransit后

你如何在

中使用(发布/订阅)它
  1. 一个 ASP.NET Core Web API 控制器?
  2. 在接口服务中?

namespace App1.Message.API
{
    public class Startup
    {
        .....
        private IContainer container { get; set; }

        public IServiceProvider ConfigureServices(IServiceCollection services)
        {
           ......
            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>()
            .SingleInstance();
            builder.Populate(services);
            container = builder.Build();
            return new AutofacServiceProvider(container);
        }

        public void Configure(IApplicationBuilder app, IHostingEnvironment env, IApplicationLifetime lifetime)
        {
            ......
            //resolve the bus from the container
            var bus = container.Resolve<IBusControl>();
            //start the bus
            var busHandle = TaskUtil.Await(() => bus.StartAsync());

            //register an action to call when the application is shutting down
            lifetime.ApplicationStopping.Register(() => busHandle.Stop());
        }
    }
}

【问题讨论】:

    标签: c# asp.net asp.net-core asp.net-core-webapi masstransit


    【解决方案1】:
        [ApiController]
        [Route("[controller]")]
        public class TestController : ControllerBase
        {
            private readonly IPublishEndpoint _publishEndpoint;
    
            public WeatherForecastController(IPublishEndpoint publishEndpoint)
            {
                _publishEndpoint = publishEndpoint;
            }
        }
    

    ConfigureServices 中注册依赖项,因此,在应用程序的其他部分,所有注册的服务都可以通过构造函数上的依赖项注入来解决。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-01
      • 2019-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-06
      • 2018-05-15
      相关资源
      最近更新 更多