如何在 ASP.NET Core Web API 中使用 MassTransit 事件总线?
Posted
技术标签:
【中文标题】如何在 ASP.NET Core Web API 中使用 MassTransit 事件总线?【英文标题】:How to use MassTransit Event Bus in a ASP.NET Core Web API? 【发布时间】:2018-12-22 23:35:56 【问题描述】:按照https://masstransit-project.com/usage/configuration.html的指令配置MassTransit后
你如何在
中使用(发布/订阅)它-
一个 ASP.NET Core Web API 控制器?
在接口服务中?
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());
【问题讨论】:
【参考方案1】: [ApiController]
[Route("[controller]")]
public class TestController : ControllerBase
private readonly IPublishEndpoint _publishEndpoint;
public WeatherForecastController(IPublishEndpoint publishEndpoint)
_publishEndpoint = publishEndpoint;
在ConfigureServices
中注册依赖项,因此,在应用程序的其他部分,所有注册的服务都可以通过构造函数上的依赖项注入来解决。
【讨论】:
以上是关于如何在 ASP.NET Core Web API 中使用 MassTransit 事件总线?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Asp.net Core Web Api 中默认使用 Newtonsoft.Json?
如何在 ASP.NET Core Web API 中使用 MassTransit 事件总线?
如何在 asp.net core web api 中绑定 Json Query 字符串
ASP.NET Core Web API - 如何在中间件管道中隐藏 DbContext 事务?