大众交通消费者依赖注入

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

我有一个 dotnet core 控制台应用程序,希望将一个类注入消费者中。 我在这里使用单个消费者设置了接收端点。

sbc.ReceiveEndpoint(appSettings.QueueUrl, ep => {
    ep.Consumer<AddAchievementConsumer>();
});

然后我在这里有我的消费类。

public class AddAchievementConsumer : IConsumer<AddAchievementQueueMessage> {

        private readonly IRepository repository;
        private readonly IAchievementFactory achievementFactory;

        public AddAchievementConsumer(IRepository repository, IAchievementFactory achievementFactory) {
            this.repository = repository;
            this.achievementFactory = achievementFactory;
        }

        public Task Consume(ConsumeContext<AddAchievementQueueMessage> context) {
            var achievementService = new AchievementManagementService(this.repository, this.achievementFactory);
            achievementService.CreateAchievement(context.Message.Title, context.Message.Description, context.Message.Points);
 
            return Task.CompletedTask;
        }

    }

我希望能够使用依赖注入将 IRepository 和 IAchievementFactory 注入到消费者中。 现在我知道我可以去的终点:

ep.Consumer(() => new AddAchievementConsumer(repository, achievementFactory));

现在这样就可以了,但我希望能够使用依赖注入来自行注入它们,而不必自己动手,因为将来会有多个消费者。

有人可以帮忙吗?谢谢。

c# dependency-injection masstransit
2个回答
3
投票

如果您参考文档,有许多示例说明如何使用 .NET Core 通用主机、依赖项注入等配置 MassTransit。


0
投票

你可以这样使用它

e.ConfigureConsumer<YouEventConsumer>(context);
© www.soinside.com 2019 - 2024. All rights reserved.