在我的專案中,我使用MassTransit來發布和訂閱事件,同時我使用RabbitMQ作為訊息代理。
我這里有一個簡單的消費者。沒有DI(private readonly ILogger<ConsultantFinishedEventConsumer> logger)。一切正常,所有的消費者都能很好地捕獲事件,但是當我在我的消費者中注入任何型別的DI時,它在我的Startup.CS中回傳了這樣的錯誤(在編譯時):
嚴重程度代碼描述專案檔案行抑制狀態 錯誤 CS0310 'ConsultantFinishedEventConsumer' 必須是一個非抽象的 型別,并且有一個公共的無引數建構式,以便將其作為 引數'TConsumer'在通用型別或方法中使用。 'ConsumerExtensions.Consumer(IReceiveEndpointConfigurator, Action<IConsumerConfigurator>)' Consultant.API ...InfrastructureDependencyInjection.cs 96 Active
這是我的消費者
public class ConsultantFinishedEventConsumer 。IConsumer<ConsultantFinishedEvent>
{
private readonly ILogger<ConsultantFinishedEventConsumer> logger;
public ConsultantFinishedEventConsumer(ILogger<AdvisorFinishedEventConsumer> logger)
{
this.logger = logger;
}
public Task Consume(ConsumeContext< ConsultantFinishedEvent> context)。
{
return null。
}
這里是我的startUp配置:
#region ServiceBus adding
public static IServiceCollection AddEventBus(>this IServiceCollection services。IConfiguration配置)。
{
services.AddMassTransit(x =>
{
x.AddBus(provider => Bus.Factory.CreateUsingRabbitMq(config =>
{
config.Host("RabbitURL"/span>, h =>
{
h.用戶名("用戶名")。
h.密碼("Pass")。
});
//Register Consumers"AdvisorQueue", ep =>
{
ep.PrefetchCount = 16;
//vvvvvvv這里我得到了編譯時間Err。
ep.Consumer<ConsultantFinishedEventConsumer>();。
});
}));
/Register RequestClients
RegisterClients(x);
});
services.AddMassTransitHostedService()。
return services。
}
#endregion。
uj5u.com熱心網友回復:
由于這個問題是在你的后續問題之前發布的,我將使用該問題的代碼來解釋上面的代碼有什么問題。
正確的配置應該使用ConfigureConsumer方法,如下所示。
public staticIServiceCollection AddEventBus(thisIServiceCollection services, IConfiguration配置)。
{
services.AddMassTransit(x =>
{
RegisterMessageConsumers(x);
RegisterRequestClients(x);
x.UsingRabbitMq((context, cfg) =>
{
cfg.Host(configuration["EventBusConnection"], h =>
{
h.用戶名(配置["EventBusUserName"])。
h.密碼(配置["EventBusPassword"])。
});
cfg.ReceiveEndpoint("AdvisorQueue", ep =>
{
ep.PrefetchCount = 16;
ep.ConfigureConsumer<ConsultantFinishedEventConsumer>(context)。
});
cfg.ConfigureEndpoints(context);
});
});
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/307081.html
標籤:
