如果我希望处理每个消息的实例,那么我需要与NServiceBus消息处理程序一起使用所需的IOC实例生命周期是什么。
PerRequest不起作用,因为给定了我拥有的众多构造函数依赖项和依赖图,当我每Handle(MessageX msg)调用只需要一个时,它给了我许多实例。我不能或不想将它直接注入到消息处理程序中,因为它需要在对象图中进一步向下。例如。注入IPersonService,依赖于IPersonRepository,它们可以按请求(默认),但IPersonDBContext需要按消息调用。
PerThread不起作用,因为NServiceBus反复使用相同的工作线程。
Singleton,HttpContext等显然不适用。
有没有人遇到过StructureMap或Castle?
答案 0 :(得分:1)
我可能在这里遗漏了一些东西,但是PerRequest会为每个MessageHandler提供一个新实例(消息处理程序是自己注册为PerRequest的)。我刚刚提交了一个修复程序,修复了导致消息处理程序为每条消息多次触发的错误。我想知道这个错误是否误导了你(尝试从CI获得最新的2.0版本,看看是否适合你)
http://teamcity.codebetter.com/viewLog.html?buildId=7087&tab=artifacts&buildTypeId=bt96
希望这有帮助!