IOC StructureMap中的NServicebus消息处理程序生命周期

时间:2009-11-07 11:08:30

标签: structuremap ioc-container nservicebus lifecycle

如果我希望处理每个消息的实例,那么我需要与NServiceBus消息处理程序一起使用所需的IOC实例生命周期是什么。

PerRequest不起作用,因为给定了我拥有的众多构造函数依赖项和依赖图,当我每Handle(MessageX msg)调用只需要一个时,它给了我许多实例。我不能或不想将它直接注入到消息处理程序中,因为它需要在对象图中进一步向下。例如。注入IPersonService,依赖于IPersonRepository,它们可以按请求(默认),但IPersonDBContext需要按消息调用。

PerThread不起作用,因为NServiceBus反复使用相同的工作线程。

Singleton,HttpContext等显然不适用。

有没有人遇到过StructureMap或Castle?

1 个答案:

答案 0 :(得分:1)

我可能在这里遗漏了一些东西,但是PerRequest会为每个MessageHandler提供一个新实例(消息处理程序是自己注册为PerRequest的)。我刚刚提交了一个修复程序,修复了导致消息处理程序为每条消息多次触发的错误。我想知道这个错误是否误导了你(尝试从CI获得最新的2.0版本,看看是否适合你)

http://teamcity.codebetter.com/viewLog.html?buildId=7087&tab=artifacts&buildTypeId=bt96

希望这有帮助!