首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >向IConsumer注入依赖项

向IConsumer注入依赖项
EN

Stack Overflow用户
提问于 2019-12-04 05:06:48
回答 1查看 182关注 0票数 1

有没有一种方法可以注入IConsumer?

例如

代码语言:javascript
复制
public class UpdateCustomerConsumer : IConsumer<ITestMessage>
{
    private IJimTest _jimTest;

    public UpdateCustomerConsumer(IJimTest jimTest)
    {
        _jimTest = jimTest;
    }

我已经使用MassTransit.Extensions.DependencyInjection nuget包设置了Startup.ConfigureServices()。

代码语言:javascript
复制
        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最终是空的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-04 05:28:16

根据documentation的说法,您的配置应该如下所示:

代码语言:javascript
复制
        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>();
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59165349

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档