出于学习目的,我正在尝试实现一个从远程actor获取数据的简单播放应用程序。演员的代码如下:
import akka.actor.{Props, ActorSystem, Actor}
class NumbersServer extends Actor {
var number = 0
protected def receive = {
case 'next => {
number += 1
number
}
case 'reset => number = 0
case 'exit => context.stop(self)
case 'get => sender ! number
}
}
object Server {
def main(args: Array[String]) {
val system = ActorSystem("ServerSystem")
val server = system.actorOf(Props[NumbersServer], "server")
}
}
我将它打包到jar中并从命令行启动它。如果我尝试从另一个窗口打开的Scala控制台向此actor发送消息,则一切正常。现在我想从Play框架中获取actor。在Application
对象中,我定义了以下方法:
def numbers = Action {
Ok(views.html.numbers(Client.actor.path.name))
}
然后在models
包中定义Client对象:
object Client {
import play.api.Play.current
val actor = Akka.system.actorFor("akka://ServerSystem@127.0.0.1:2552/user/server")
}
numbers.html.scala
文件:
@(message: String)
@main("Header") {
<h1>@message</h1>
}
所以我希望当我去127.0.0.1:9000/numbers
时,我会得到一个包含服务器角色路径的页面。而不是这个,我得到<h1>deadLetters</h1>
。我做错了什么以及如何正确地做到这一点?
答案 0 :(得分:0)
请按照
中的配置进行操作https://groups.google.com/forum/#!topic/akka-user/Vw-B8nQeagk
并且还添加了akka-remote依赖
val appDependencies = Seq(
"com.typesafe.akka" % "akka-remote" % "2.0.2"
)