Инъекция зависимости потребителей в общественном транспорте

#c# #dependency-injection #masstransit

Вопрос:

У меня есть консольное приложение 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));
 

Теперь это было бы прекрасно, но я хотел бы иметь возможность использовать инъекцию depenency, чтобы вводить их самостоятельно, не делая этого самостоятельно, так как в будущем будет несколько потребителей.

Кто-нибудь может помочь? Спасибо.

Ответ №1:

Если вы обратитесь к документации, там есть много примеров того, как настроить MassTransit с помощью универсального хоста .NET Core, внедрения зависимостей и т. Д.

Комментарии:

1. Спасибо, Крис, я проверю это

2. привет, Крис, у тебя больше нет примеров, не так ли? Я не смог ничего сделать с тем, что есть в документации. Ничего вокруг инъекций потребителям, что я мог бы найти. Просто пытаюсь внедриться в потребителя в моем консольном приложении.

3. Еще одна страница в документации .