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

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

按照 https://masstransit-project.com/usage/configuration.html 的说明配置 MassTransit 之后

你如何在

中使用(发布/订阅)它
  1. 一个 ASP.NET Core Web API Controller ?
  2. 在接口(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/

相关文章:

c# - 单击按钮后回发后如何显示 div?

asp.net - ASP.MVC CORE 网站的最大上传大小

postgresql - 将 PostgreSQL 安装到 asp.net core 容器中

c# - "&#64;"这样的字符是什么类型,如何转换成ASCII

C# 将 Conditional() 与环境变量一起使用

c# - ASP.NET Core - 自定义 AspNetCore.Identity 实现不起作用

c# - 为什么 Entity Framework (Core) 在 Add() 操作中删除旧记录?

c# - 如何在 ASP.net Core 中使用按钮导航到新页面?

c# - Swagger JSON 相对路径

c# - 使用本地应用程序从服务器获取文件