有没有一种方法可以注入IConsumer?
例如
public class UpdateCustomerConsumer : IConsumer<ITestMessage>
{
private IJimTest _jimTest;
public UpdateCustomerConsumer(IJimTest jimTest)
{
_jimTest = jimTest;
}我已经使用MassTransit.Extensions.DependencyInjection nuget包设置了Startup.ConfigureServices()。
services.AddMassTransit(x =>
{
x.AddBus(provider => Bus.Factory.CreateUsingRabbitMq(cfg =>
{
cfg.Host(new Uri("rabbitmq://localhost:5672/"), h => { });
cfg.ReceiveEndpoint("test", ep =>
{
ep.Consumer<Consumers.UpdateCustomerConsumer>();
});
cfg.ConfigureEndpoints(provider);
}));
});
services.AddSingleton<IJimTest, JimTest>();但是_jimTest最终是空的。
发布于 2019-12-04 05:28:16
根据documentation的说法,您的配置应该如下所示:
services.AddMassTransit(x =>
{
x.AddConsumer<Consumers.UpdateCustomerConsumer>(); //added this line
x.AddBus(provider => Bus.Factory.CreateUsingRabbitMq(cfg =>
{
cfg.Host(new Uri("rabbitmq://localhost:5672/"), h => { });
cfg.ReceiveEndpoint("test", ep =>
{
ep.ConfigureConsumer<Consumers.UpdateCustomerConsumer>(provider); //changed
});
//if you use cfg.ReceiveEndpoint this one is not needed
//you can remove cfg.ReceiveEndpoint and use below instead
//cfg.ConfigureEndpoints(provider);
}));
});
services.AddSingleton<IJimTest, JimTest>();https://stackoverflow.com/questions/59165349
复制相似问题