1

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

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

PerThread 无法工作,因为 NServiceBus 一遍又一遍地使用相同的工作线程。

Singleton、HttpContext等..显然不适用。

有人用 StructureMap 或 Castle 遇到过这个吗?

4

1 回答 1

1

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

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

希望这可以帮助!

于 2009-11-07T14:39:04.520 回答