我目前正在使用scaldi实现依赖注入的Akka路由器逻辑。为什么我不能用scaldi绑定到单个actor实例,因为我的actor是路由器而我只想拥有一个单独的实例? 我提出这个问题的方式是another stackoverflow entry。
我的scaldi模块:
class DAOModule extends Module {
bind toProvider new UserDaoWorker
binding to new UserDaoRouter
}
这样只创建了一个实例,一旦我多次注入路由器,就会从sender()方法中获取一个死信actor作为发送者。
当我将绑定更改为...
时binding toProvider new UserDaoRouter
...它工作得非常好,但每次注入都意味着我的路由器的新实例。我是对的吗?
那么我怎样才能实现只有一个可注射的路由器实例呢?
提前致谢
答案 0 :(得分:0)
可能是这样的: 将[UserDaoRouter]绑定到新的UserDaoRouter ??
答案 1 :(得分:0)
这对我有用:
class DAOModule extends Module {
binding toProvider new UserDaoWorker
binding toProvider new UserDaoRouter
binding identifiedBy 'singletonUserRouter to {
implicit val system = inject[ActorSystem]
AkkaInjectable.injectActorRef[UserDaoRouter]
}
}
然后在我的控制器中:
val userDaoRouter = inject[ActorRef] ('singletonUserRouter)
我希望这能帮助别人;)