我有一个Actor类来管理Actors列表.当它收到某种类型的消息时,会将其传递给它所知道的每个Actors.
var loggers : List[Logger]
def receive = {
...
// log request
case logmessage : LogMessage => {
// send message to each logger (if none, nothing happens)
for (logger <- loggers)
logger ! logmessage
}
...
}
Run Code Online (Sandbox Code Playgroud)
我收到了编译错误logger ! logmessage:"value!不是(包).Logger的成员".的!这让谷歌很难.Logger类编译,有自己的接收方法,一行包括self ! PoisonPill,意思是!运营商在那里工作 他们在同一个包里.
Dyl*_*lan 11
我在假设 Logger extends Actor
在Akka中,消息发送是在ActorRefs 之间完成的,而不是Actors.每个演员self都是一个ActorRef实例.所以你想要改变你的记录器var var loggers: List[ActorRef].
更好的是,你可以使用a ActorSelection,它有一个!方法将消息发送给选择中的所有actor refs.你可以找到ActorSelection在Actor中创建一个的方法context.
PS您可以使用Akka Scaladocs上的"#"页面查找以符号开头的方法.在该页面上,您可以看到有一个已!定义的,ScalaActorRef并且ScalaActorSelection两者都是来自ActorRef和的隐式升级ActorSelection.
| 归档时间: |
|
| 查看次数: |
2464 次 |
| 最近记录: |