Я интегрирую MassTransit в решение, которое использует SaasKit для реализации мультитенантности.
Мой DbContext использует метод определения строки подключения в «OnConfiguring», как описано здесь:
https://benfoster.io/blog/aspnet-core-multi-tenancy-data-isolation-with-entity-framework
Проблема заключается в том, что при использовании сообщений Арендаторне существует, поэтому DbContext не инициализирован должным образом.
Как внедрить Арендатора в жизненный цикл MassTransit?
Я использую инъекцию зависимостей AspNet Core, где я добавляю арендатора какэто:
public void Configure(...)
(...)
app.UseMultitenancy<MyTenant>();
Конфигурация шины:
var busControl = Bus.Factory.CreateUsingRabbitMq(cfg =>
{
(...)
cfg.ReceiveEndpoint(host, "customer-updated", ep =>
{
ep.PrefetchCount = 1;
ep.UseMessageRetry(r => r.Interval(2, 100));
ep.ConfigureConsumer<CustomerUpdatedConsumer>(provider);
EndpointConvention.Map<ICustomerUpdated>(ep.InputAddress);
});
Внутри моего конструктора DbContext, только при использовании сообщений я продолжаю получать MyTenant как ноль ...
public MyDbContext(DbContextOptions<MyDbContext> options, MyTenant tenant)
{
this.tenant = tenant;
}
Кто-нибудь уже пытался интегрировать SaasKit с MassTransit?
Спасибо