使用 Google Guice 将服务注入 Scala Akka Actors

Injecting services into Scala Akka Actors with Google Guice

我有几个服务想注入到 akka actors 中。我正在与三种不同类型的演员合作,每种类型将使用不同的服务。目前我只有一个模块,在 actor 内部实例化一个注入器,并在每个 Crow 内部进行绑定。问题是,对于彼此,他们收到了一个新的服务实例。

我读了一点书,发现 http://www.typesafe.com/activator/template/activator-akka-scala-guice 但是 akka 的文档建议我们不要使用 IndirectActorProducer。将这些服务注入演员的最佳方式是什么? @Inject 关键字看起来很有前途,但我不确定如何使用它。

工作流程:

Main 创建指挥官,向其发送命令,指挥官创建三种不同类型的乌鸦,并向它们发送消息以执行(正是这些乌鸦需要服务)。

在您的模块中使用@Provides 方法接受服务作为参数和return ActorRefs。在这些提供者方法中,您从注入的服务中实例化 Props,但让 akka 实际创建 actor,因此您不需要子注入器。

示例见我对 的回答。

我最终使用 http://www.typesafe.com/activator/template/activator-akka-scala-guice 作为指南。我发现它工作得很好,它实际上并没有使用 IndirectActorProducer 而是另一个 class 扩展它,这也是他们推荐的。