由于 MassTransit,应用程序无法启动。他必须自己注册他的依赖项

问题描述 投票:0回答:1

我的消费者有这个构造函数:

public QueueProcessingService(ILogger<QueueProcessingService> logger, IQueueRepository repository, ISendEndpoint endpoint)
{
    _logger = logger;
    _repository = repository;
    _endpoint = endpoint;
}

System.InvalidOperationException:尝试激活“OrderConsumerService.QueueProcessingService”时无法解析类型“MassTransit.ISendEndpoint”的服务。

我尝试了 services.AddScoped() 但没有帮助。

c# asp.net asp.net-core asp.net-web-api masstransit
1个回答
0
投票

根据这篇文章,你可以发现如果你想使用

ISendEndpointProvider (scoped)
,你应该首先使用以下代码在program.cs中注册MassTransit:

using MassTransit;

services.AddMassTransit(x =>
{
    // A Transport
    x.UsingRabbitMq((context, cfg) =>
    {
    });
});

添加 MassTransit,如上所示,将为服务集合配置所需的组件,包括:

  • IBus(单例)

  • IBusControl(单例)

  • IReceiveEndpointConnector(单例)

  • ISendEndpointProvider(作用域)

  • IPublishEndpoint(范围)

  • IRequestClient(范围)

© www.soinside.com 2019 - 2024. All rights reserved.