首页 > 解决方案 > MassTransit 与 SaasKit 集成:消费消息时如何生成租户?

问题描述

我正在将 MassTransit 集成到使用 SaasKit 实现多租户的解决方案中。

我的 DbContext 使用在“OnConfiguring”中定义连接字符串的方法,如下所述:

https://benfoster.io/blog/aspnet-core-multi-tenancy-data-isolation-with-entity-framework

问题是在消费消息时,Tenant 不存在,所以 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 设为 null ...

 public MyDbContext(DbContextOptions<MyDbContext> options, MyTenant tenant)
        {
            this.tenant = tenant;
        }

是否有人已经尝试将 SaasKit 与 MassTransit 集成?

谢谢

标签: multi-tenantmasstransitsaaskit

解决方案


推荐阅读