EDIT 注意,我需要对此https://github.com/akka/akka/commit/ce014ece3568938b2036c4ccfd21b92faba69607#L13L6进行相反的更改,以使接受的答案与AKKA 2.1一起使用,这是在akkas主页上找到的稳定分布!
我已经阅读了所有可以在AKKA上找到的教程,但我发现的任何内容都没有“开箱即用” .
使用eclipse,我想创建2个程序 .
Program1:启动actor“joe”并以某种方式使它在127.0.0.1:some_port上可用
Program2:在127.0.0.1:some_port获取对actor“joe”的引用 . 向“joe”发送hello消息 .
程序1应在收到消息时打印一些内容 . 我想在使用AKKA 2.1的eclipse中运行这个例子 . 有人可以列出2个程序(program1和program2)以及一个正在运行的application.conf文件吗?
edit> 让我告诉你到目前为止我得到了什么:
actor
case class Greeting(who: String) extends Serializable
class GreetingActor extends Actor with ActorLogging {
def receive = {
case Greeting(who) ⇒ println("Hello " + who);log.info("Hello " + who)
}
}
Program1 :
package test
import akka.actor.ActorSystem
object Machine1 {
def main(args: Array[String]): Unit = {
val system = ActorSystem("MySystem")
}
}
Program2
package test
import akka.actor.ActorSystem
import akka.actor.Props
import akka.actor.actorRef2Scala
object Machine2 {
def main(args: Array[String]): Unit = {
val system = ActorSystem("MySystem")
val greeter = system.actorOf(Props[GreetingActor], name = "greeter")
greeter ! Greeting("Felix")
}
}
application.conf
akka {
actor {
deployment {
/greeter {
remote = "akka://MySystem@127.0.0.1:2553"
}
}
}
}
但是,当我只启动Program2并输出时,此程序有效:
Hello Felix
[INFO] [02/18/2013 12:27:29.999] [MySystem-akka.actor.default-dispatcher-2] [akka://MySystem/user/greeter] Hello Felix
它似乎没有拿起我的application.conf . 我尝试将它放在我的eclipse项目的./src/和./文件夹中 . 没有不同 . 另外,我知道这真的是降级部署,但我需要一个hello world程序才能使用AKKA . 我花了这么多时间没有得到一个简单的工作应用程序 .
4 回答
正如korefn所提到的,remote documentation详细解释了它的工作原理 . 它还链接到example application . 该示例应该为您提供入门所需的一切 .
编辑
要使示例应用程序运行,请执行以下步骤:
从GitHub克隆
进入
akka
目录并运行sbt
切换到
akka-sample-project
在项目上调用
run
并选择CalcApp
切换到另一个控制台并重复前几个步骤
调用
run
并选择LookupApp
切换回另一个控制台,你应该看到这样的事情:
Akka 2.2.3的更新
可以按如下方式创建最小的远程应用程序:
在Eclipse中创建2个项目:客户端和服务器
服务器:
服务器的代码是
服务器的applincation.conf是
客户:
客户端代码是
客户端application.conf是:
配置必须放在两个名为application.conf的文件中,这两个文件都位于两个项目的bin目录中 .
好吧,在您的示例中,客户端代码从不引用配置文件,它将无法正常工作 .
默认情况下,akka将使用application.conf文件 - 因此不需要显式选择它 .
如果一个人想要那么代码将是(将上面的代码作为例子):