【问题标题】:why cant I bind to single actor instance (akka router) with scaldi?为什么我不能用 scaldi 绑定到单个参与者实例(akka 路由器)?
【发布时间】:2014-11-22 23:46:03
【问题描述】:

我目前正在努力使用 scaldi 进行依赖注入来实现我的 Akka 路由器逻辑。为什么我不能用 scaldi 绑定到单个演员实例,因为我的演员是一个路由器,我只想拥有它的一个实例? 我来问这个问题的方式是another stackoverflow entry

我的 scaldi 模块:

class DAOModule extends Module {
  bind toProvider new UserDaoWorker
  binding to new UserDaoRouter
}

这种方式只创建一个实例,一旦我多次注入我的路由器,它就会从 sender() 方法中获得一个死信actor作为发送者。

当我将绑定更改为...时

binding toProvider new UserDaoRouter

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

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

提前致谢

【问题讨论】:

    标签: akka router dead-letter scaldi


    【解决方案1】:

    可能是这样的: 将 [UserDaoRouter] 绑定到新的 UserDaoRouter ??

    【讨论】:

      【解决方案2】:

      这对我有用:

      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)
      

      我希望这对其他人有帮助;)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-12-16
        • 1970-01-01
        • 2018-10-01
        • 2013-08-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多