在rebus中使用每个消息的嵌套容器

时间:2014-02-14 09:32:32

标签: structuremap esb rebus

我们目前正在考虑将我们的应用程序从rhino-esb移至rebus。我们背后的理由是,这些天来,rhino-esb几乎不活跃。

今天我们依赖于structuremap来为每条消息使用一个嵌套容器,我们希望保持这种方式,这样我们就不需要改变我们基础设施的很大一部分了。我已经查看了一下rebus api,但是还没有找到处理嵌套容器的好方法。有没有人对如何解决它有任何建议?或许你自己实现了它?

1 个答案:

答案 0 :(得分:2)

嗯 - 我自己不是一个StructureMap家伙,我必须承认我从未试图让Rebus使用嵌套容器/子容器。

但是如果你自己实现一个处理程序激活器和一个工作单元管理器,我认为你可以使它工作,你可以这样启用:

Configure.With(yourHandlerActivator)
    .Events(e => e.AddUnitOfWorkManager(yourUnitOfWorkManager)
    .(...)

然后您可以使用该工作单元管理器创建一个子容器,并将其存储在消息上下文中,如下所示:

MessageContext.GetCurrent().Items["some-key"] = yourChildContainer;

然后你获取&在解决处理程序时,请在处理程序激活器中使用。

当工作单元结束时,可以处理子容器,从而正确释放物品。