#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. Еще одна страница в документации .