每个消息范围的Masstransit Structuremap

时间:2015-03-30 14:59:43

标签: masstransit structuremap3

我正在使用带有Entity Framework的存储库模式,我在每个存储库中注入DbContext。我有一个MassTransit消费者的多个存储库。每个存储库必须在使用单个消息的范围内共享DbContext。

我需要在DbContext上放置每个消息的生命周期范围。我怎么能这样做?

        For<DbContext>().Use<DbContext>();
        For<MyConsumer>().Use<MyConsumer>();
        For<IRepository1>.Use<Repository1>();
        For<IRepository2>.Use<Repository2>();
        For<IServiceBus>().Singleton().Use("bookingServicesServiceBus", ctx =>
        {
            var bus = ServiceBusFactory.New(sbc =>
            {
                sbc.Subscribe(s => s.LoadFrom(ctx.GetInstance<IContainer>()));
            });

            return bus;
        });

1 个答案:

答案 0 :(得分:0)

Doh解决方案很明显。 MassTransit.Structuremap nuget包实际上使用嵌套容器来处理每个消息的范围。

然而,由于某些未知原因,我将DbContext注册为HybridHttpOrThreadLocalScoped。