EDIT Notice, I needed to make the reverse changes of this https://github.com/akka/akka/commit/ce014ece3568938b2036c4ccfd21b92faba69607#L13L6 to make the accepted answer work with AKKA 2.1 which is the stable distribution found on akkas homepage!
I have read all the tutorials I could find on AKKA, but nothing I found works "out of box".
Using eclipse, I want to create 2 programs.
Program1: starts actor "joe" and somehow makes it available on 127.0.0.1:some_port
Program2: gets a reference to actor "joe" at 127.0.0.1:some_port. Sends a hello message to "joe".
Program 1 should print something when the message is received. I want to run this example in eclipse using AKKA 2.1. Can someone list 2 programs, (program1 and program2) together with a working application.conf file that does this and nothing else?
edit> let me show you what I got so far:
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"
}
}
}
}
However, this program works when I start only Program2 and it outputs:
Hello Felix
[INFO] [02/18/2013 12:27:29.999] [MySystem-akka.actor.default-dispatcher-2] [akka://MySystem/user/greeter] Hello Felix
It seems that it is not picking up my application.conf. I tried placing it both in the ./src/ and ./ folder of my eclipse project. No difference. Also, I know this is really demote deployment, but I need just a hello world program to work using AKKA. I spent so much time on this without getting a simple working application.
akka by default will use the application.conf file - so it does not need to be explicitly selected.
if one does want to then the code would be (taking the code above as an exmaple):
As korefn mentioned, the remote documentation explains it's workings in detail. It also links to an example application. That example should give you everything you need to get started.
Edit
To get the sample application running perform the following steps:
Clone from GitHub
Go into the
akka
directory and runsbt
Switch to the
akka-sample-project
Call
run
on the project and select theCalcApp
Switch to another console and repeat the first few steps
Call
run
and select theLookupApp
Switch back to the other console and you should see something like this:
Update for Akka 2.2.3
A minimal remote application can be created as follows:
Create 2 Projects in Eclipse: Client and Server
Server:
The code for the server is
The applincation.conf for the server is
Client:
The Client-code is
The client application.conf is:
Configurations have to be placed in two files called application.conf, both within the bin directory of the two projects.
Well, in your example, the Client code never references the config file and it won't work.