为什么我不能用scaldi绑定到单个actor实例(akka路由器)?

时间:2014-09-28 13:34:16

标签: akka router dead-letter scaldi

我目前正在使用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

...它工作得非常好,但每次注入都意味着我的路由器的新实例。我是对的吗?

那么我怎样才能实现只有一个可注射的路由器实例呢?

提前致谢

2 个答案:

答案 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)

我希望这能帮助别人;)