按照 https://masstransit-project.com/usage/configuration.html 的说明配置 MassTransit 之后
你如何在
中使用(发布/订阅)它- 一个 ASP.NET Core Web API Controller ?
- 在接口(interface)服务中?
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());
}
}
}
最佳答案
[ApiController]
[Route("[controller]")]
public class TestController : ControllerBase
{
private readonly IPublishEndpoint _publishEndpoint;
public WeatherForecastController(IPublishEndpoint publishEndpoint)
{
_publishEndpoint = publishEndpoint;
}
}
在 ConfigureServices
中注册依赖项,因此在应用程序的其他部分,所有注册的服务都可以通过构造函数上的依赖项注入(inject)来解析。
关于c# - 如何在 ASP.NET Core Web API 中使用 MassTransit 事件总线?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51344578/