ServiceStack:依赖注入对象在 IMessageService 中的生命周期

ServiceStack: Dependency injected object's lifetime in IMessageService

我们有实现 IMessageService.RegisterHandler<T>(Func<IMessage<T>, object>) 的逻辑。在消息队列的执行块中,我们使用 Funq.Container 自动连接一个服务。该服务的属性是依赖注入的,但似乎在线程之间共享。 属性 class 定义如下:

_Container.RegisterAutoWired<DbConnectionManager>().ReusedWithin(Funq.ReuseScope.Request);

大多数时候,DbConnectionManager 属性 被创建为一个新对象。然而,在一些非常繁忙的时候,我们注意到 DbConnectionManager 在线程之间被重用并导致了问题。

我的问题是:Web 请求和消息队列中都使用的依赖项注入对象的适当生命周期设置是多少?我们对这个特定问题有什么见解吗?百万感谢!

不要对 MQ 请求使用请求范围。如果依赖是 ThreadSafe 使用默认的单例注册:

container.RegisterAutoWired<DbConnectionManager>();

否则,如果它不是线程安全的,则将其注册为瞬态依赖项:

container.RegisterAutoWired<DbConnectionManager>().ReusedWithin(ReuseScope.None);