Friday, June 26, 2015

First reaction to Akka

Akka looks awesome. But never have I seen a more overdocumented framework. Every piece of docs is an exposition. Way too hard to find hello world. Most people today don't read docs top to bottom. We google "build akka" ...and we find this: http://doc.akka.io/docs/akka/snapshot/dev/building-akka.html

Any mention here of Maven being supported? Not that I saw. So I spent a while thinking I had to learn SBT. Then I found this page, which right at the top shows how to build with maven:

http://doc.akka.io/docs/akka/snapshot/intro/getting-started.html

But...WTF...the pom.xml they ship with doesn't include a connection to their repo! Have to add this:
<repositories>
<repository>
<id>akka-snapshots</id>
<snapshots>
<enabled>true</enabled>
</snapshots>
<url>http://repo.akka.io/snapshots/</url>
</repository>
</repositories>
view raw gistfile1.txt hosted with ❤ by GitHub
Next we try to run some akka bins: ghendrey-mbp:akka-2.3.11 ghendrey$ ./bin/akka-cluster -bash: ./bin/akka-cluster: /bin/bash^M: bad interpreter: No such file or directory 

(yup, every bin script is borked with windows line returns and won't run)

LOL.

So how about we pop off the stack and try another approach:  http://doc.akka.io/docs/akka/2.0.1/intro/getting-started-first-java.html
 ...Follow the instructions..."
ghendrey-mbp:NetBeansProjects ghendrey$ cd akka/akka-tutorials/akka-tutorial-first
-bash: cd: akka/akka-tutorials/akka-tutorial-first: No such file or directory 
 
So after fixing the line breaks, fixing pom.xml, finding the right docs, finally hello world runs. Yeah. Now I try a more complex example.
Does it work?? NOPE. Exception spray:
Scanning for projects...
------------------------------------------------------------------------
Building akka-sample-fsm-java-lambda 2.4-SNAPSHOT
------------------------------------------------------------------------
Downloading: http://repo.akka.io/snapshots/com/typesafe/akka/akka-testkit_2.11/2.4-SNAPSHOT/maven-metadata.xml
Downloading: http://repo.akka.io/snapshots/com/typesafe/akka/akka-testkit_2.11/2.4-SNAPSHOT/akka-testkit_2.11-2.4-SNAPSHOT.pom
Downloaded: http://repo.akka.io/snapshots/com/typesafe/akka/akka-testkit_2.11/2.4-SNAPSHOT/akka-testkit_2.11-2.4-SNAPSHOT.pom (3 KB at 37.3 KB/sec)
Downloading: http://repo.akka.io/snapshots/com/typesafe/akka/akka-testkit_2.11/2.4-SNAPSHOT/akka-testkit_2.11-2.4-SNAPSHOT.jar
Downloaded: http://repo.akka.io/snapshots/com/typesafe/akka/akka-testkit_2.11/2.4-SNAPSHOT/akka-testkit_2.11-2.4-SNAPSHOT.jar (252 KB at 208.7 KB/sec)
--- maven-resources-plugin:2.5:resources (default-resources) @ akka-sample-fsm-java-lambda ---
[debug] execute contextualize
Using 'UTF-8' encoding to copy filtered resources.
skip non existing resourceDirectory /Users/ghendrey/NetBeansProjects/akka/akka-samples/akka-sample-fsm-java-lambda/src/main/resources
--- maven-compiler-plugin:3.1:compile (default-compile) @ akka-sample-fsm-java-lambda ---
Changes detected - recompiling the module!
Compiling 4 source files to /Users/ghendrey/NetBeansProjects/akka/akka-samples/akka-sample-fsm-java-lambda/target/classes
--- exec-maven-plugin:1.2.1:exec (default-cli) @ akka-sample-fsm-java-lambda ---
[06/26/2015 12:24:20.378] [default-akka.actor.default-dispatcher-12] [akka://default/user/$a] Actor behavior has not been set with receive(...)
akka.actor.ActorInitializationException: exception during creation
at akka.actor.ActorInitializationException$.apply(Actor.scala:167)
at akka.actor.ActorCell.create(ActorCell.scala:596)
at akka.actor.ActorCell.invokeAll$1(ActorCell.scala:456)
at akka.actor.ActorCell.systemInvoke(ActorCell.scala:478)
at akka.dispatch.Mailbox.processAllSystemMessages(Mailbox.scala:281)
at akka.dispatch.Mailbox.run(Mailbox.scala:222)
at akka.dispatch.Mailbox.exec(Mailbox.scala:233)
at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
Caused by: akka.actor.IllegalActorStateException: Actor behavior has not been set with receive(...)
at akka.actor.AbstractActor.receive(AbstractActor.scala:71)
at akka.actor.ActorCell.newActor(ActorCell.scala:558)
at akka.actor.ActorCell.create(ActorCell.scala:578)
... 9 more
[06/26/2015 12:24:20.379] [default-akka.actor.default-dispatcher-12] [akka://default/user/$e] Actor behavior has not been set with receive(...)
akka.actor.ActorInitializationException: exception during creation
at akka.actor.ActorInitializationException$.apply(Actor.scala:167)
at akka.actor.ActorCell.create(ActorCell.scala:596)
at akka.actor.ActorCell.invokeAll$1(ActorCell.scala:456)
at akka.actor.ActorCell.systemInvoke(ActorCell.scala:478)
at akka.dispatch.Mailbox.processAllSystemMessages(Mailbox.scala:281)
at akka.dispatch.Mailbox.run(Mailbox.scala:222)
at akka.dispatch.Mailbox.exec(Mailbox.scala:233)
at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
Caused by: akka.actor.IllegalActorStateException: Actor behavior has not been set with receive(...)
at akka.actor.AbstractActor.receive(AbstractActor.scala:71)
at akka.actor.ActorCell.newActor(ActorCell.scala:558)
at akka.actor.ActorCell.create(ActorCell.scala:578)
... 9 more
[06/26/2015 12:24:20.379] [default-akka.actor.default-dispatcher-12] [akka://default/user/$c] Actor behavior has not been set with receive(...)
akka.actor.ActorInitializationException: exception during creation
at akka.actor.ActorInitializationException$.apply(Actor.scala:167)
at akka.actor.ActorCell.create(ActorCell.scala:596)
at akka.actor.ActorCell.invokeAll$1(ActorCell.scala:456)
at akka.actor.ActorCell.systemInvoke(ActorCell.scala:478)
at akka.dispatch.Mailbox.processAllSystemMessages(Mailbox.scala:281)
at akka.dispatch.Mailbox.run(Mailbox.scala:222)
at akka.dispatch.Mailbox.exec(Mailbox.scala:233)
at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
Caused by: akka.actor.IllegalActorStateException: Actor behavior has not been set with receive(...)
at akka.actor.AbstractActor.receive(AbstractActor.scala:71)
at akka.actor.ActorCell.newActor(ActorCell.scala:558)
at akka.actor.ActorCell.create(ActorCell.scala:578)
... 9 more
[06/26/2015 12:24:20.381] [default-akka.actor.default-dispatcher-12] [akka://default/user/$b] Actor behavior has not been set with receive(...)
akka.actor.ActorInitializationException: exception during creation
at akka.actor.ActorInitializationException$.apply(Actor.scala:167)
at akka.actor.ActorCell.create(ActorCell.scala:596)
at akka.actor.ActorCell.invokeAll$1(ActorCell.scala:456)
at akka.actor.ActorCell.systemInvoke(ActorCell.scala:478)
at akka.dispatch.Mailbox.processAllSystemMessages(Mailbox.scala:281)
at akka.dispatch.Mailbox.run(Mailbox.scala:222)
at akka.dispatch.Mailbox.exec(Mailbox.scala:233)
at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
Caused by: akka.actor.IllegalActorStateException: Actor behavior has not been set with receive(...)
at akka.actor.AbstractActor.receive(AbstractActor.scala:71)
at akka.actor.ActorCell.newActor(ActorCell.scala:558)
at akka.actor.ActorCell.create(ActorCell.scala:578)
... 9 more
[06/26/2015 12:24:20.381] [default-akka.actor.default-dispatcher-12] [akka://default/user/$d] Actor behavior has not been set with receive(...)
akka.actor.ActorInitializationException: exception during creation
at akka.actor.ActorInitializationException$.apply(Actor.scala:167)
at akka.actor.ActorCell.create(ActorCell.scala:596)
at akka.actor.ActorCell.invokeAll$1(ActorCell.scala:456)
at akka.actor.ActorCell.systemInvoke(ActorCell.scala:478)
at akka.dispatch.Mailbox.processAllSystemMessages(Mailbox.scala:281)
at akka.dispatch.Mailbox.run(Mailbox.scala:222)
at akka.dispatch.Mailbox.exec(Mailbox.scala:233)
at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
Caused by: akka.actor.IllegalActorStateException: Actor behavior has not been set with receive(...)
at akka.actor.AbstractActor.receive(AbstractActor.scala:71)
at akka.actor.ActorCell.newActor(ActorCell.scala:558)
at akka.actor.ActorCell.create(ActorCell.scala:578)
... 9 more
[06/26/2015 12:24:20.384] [default-akka.actor.default-dispatcher-4] [akka://default/user/$a] Message [sample.become.Messages$2] from Actor[akka://default/deadLetters] to Actor[akka://default/user/$a#-641531904] was not delivered. [1] dead letters encountered. This logging can be turned off or adjusted with configuration settings 'akka.log-dead-letters' and 'akka.log-dead-letters-during-shutdown'.
[06/26/2015 12:24:20.384] [default-akka.actor.default-dispatcher-4] [akka://default/user/$b] Message [sample.become.Messages$2] from Actor[akka://default/deadLetters] to Actor[akka://default/user/$b#1535097557] was not delivered. [2] dead letters encountered. This logging can be turned off or adjusted with configuration settings 'akka.log-dead-letters' and 'akka.log-dead-letters-during-shutdown'.
[06/26/2015 12:24:20.384] [default-akka.actor.default-dispatcher-4] [akka://default/user/$d] Message [sample.become.Messages$2] from Actor[akka://default/deadLetters] to Actor[akka://default/user/$d#1705846896] was not delivered. [3] dead letters encountered. This logging can be turned off or adjusted with configuration settings 'akka.log-dead-letters' and 'akka.log-dead-letters-during-shutdown'.
[06/26/2015 12:24:20.384] [default-akka.actor.default-dispatcher-4] [akka://default/user/$c] Message [sample.become.Messages$2] from Actor[akka://default/deadLetters] to Actor[akka://default/user/$c#-1017518985] was not delivered. [4] dead letters encountered. This logging can be turned off or adjusted with configuration settings 'akka.log-dead-letters' and 'akka.log-dead-letters-during-shutdown'.
[06/26/2015 12:24:20.384] [default-akka.actor.default-dispatcher-4] [akka://default/user/$e] Message [sample.become.Messages$2] from Actor[akka://default/deadLetters] to Actor[akka://default/user/$e#793172322] was not delivered. [5] dead letters encountered. This logging can be turned off or adjusted with configuration settings 'akka.log-dead-letters' and 'akka.log-dead-letters-during-shutdown'.
view raw gistfile1.txt hosted with ❤ by GitHub
 
 

No comments:

Post a Comment