将MassTransit与StructureMap注册表类一起使用

时间:2019-09-03 11:40:29

标签: structuremap masstransit

我在大型代码库中将MassTransit(5.5.5)与StructureMap(4.7)结合使用,使用注册表类来使我的依赖项保持井井有条,并遵循here的概述:

class BusRegistry : Registry
{
    public BusRegistry()
    {
        For<IBusControl>(new SingletonLifecycle())
            .Use(context => Bus.Factory.CreateUsingInMemory(x =>
            {
                x.ReceiveEndpoint("customer_update_queue", e => e.LoadFrom(context));
            }));
        Forward<IBusControl, IBus>();
    }
}

// Snip...

public void CreateContainer()
{
    _container = new Container(x => {
        x.AddRegistry(new BusRegistry());
    });
}

但是,不赞成在调用ReceiveEndpoint时使用的LoadFrom扩展方法。那么,现在应该如何将MassTransit与StructureMap Registry类一起使用?

1 个答案:

答案 0 :(得分:0)

由于StructureMap即将推出,可能不会是一个很好的答案。我最终没有在用户配置中使用StructureMap:

class BusRegistry : Registry
{
    public BusRegistry()
    {
        For<IBusControl>(new SingletonLifecycle())
            .Use(context => Bus.Factory.CreateUsingInMemory(x =>
            {
                x.ReceiveEndpoint("customer_update_queue", endpointCfg => {
                    endpointCfg.Consumer<FirstSubscriber>(
                        GetFirstSubscriberFactoryMethod()
                    );
                    endpointCfg.Consumer<SecondSubscriber>(
                        GetSecondSubscriberFactoryMethod()
                    );
                    // etc...
                });
            }));
        Forward<IBusControl, IBus>();
    }
}

...尽管我正在使用StructureMap将依赖项注入使用者。