如何在 ASP.NET Core Web API 中使用 MassTransit 事件总线?

001*_*001 5 c# asp.net masstransit asp.net-core asp.net-core-webapi

按照说明通过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());
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

小智 0

    [ApiController]
    [Route("[controller]")]
    public class TestController : ControllerBase
    {
        private readonly IPublishEndpoint _publishEndpoint;

        public WeatherForecastController(IPublishEndpoint publishEndpoint)
        {
            _publishEndpoint = publishEndpoint;
        }
    }
Run Code Online (Sandbox Code Playgroud)

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