我们目前正在考虑将我们的应用程序从rhino-esb移至rebus。我们背后的理由是,这些天来,rhino-esb几乎不活跃。
今天我们依赖于structuremap来为每条消息使用一个嵌套容器,我们希望保持这种方式,这样我们就不需要改变我们基础设施的很大一部分了。我已经查看了一下rebus api,但是还没有找到处理嵌套容器的好方法。有没有人对如何解决它有任何建议?或许你自己实现了它?
答案 0 :(得分:2)
嗯 - 我自己不是一个StructureMap家伙,我必须承认我从未试图让Rebus使用嵌套容器/子容器。
但是如果你自己实现一个处理程序激活器和一个工作单元管理器,我认为你可以使它工作,你可以这样启用:
Configure.With(yourHandlerActivator)
.Events(e => e.AddUnitOfWorkManager(yourUnitOfWorkManager)
.(...)
然后您可以使用该工作单元管理器创建一个子容器,并将其存储在消息上下文中,如下所示:
MessageContext.GetCurrent().Items["some-key"] = yourChildContainer;
然后你获取&在解决处理程序时,请在处理程序激活器中使用。
当工作单元结束时,可以处理子容器,从而正确释放物品。