Интеграция MassTransit с SaasKit: как генерировать клиента при приеме сообщений? - PullRequest
0 голосов
/ 26 апреля 2019

Я интегрирую 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?

Спасибо

...