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