Akka Workshop Cheat Sheet


  • Akka Cheat Sheet
  • Robot Cheat Sheet
  • Scala Cheat Sheet (List handling)

Akka Cheat Sheet

Creating an actor system (usually one per machine)

val system = ActorSystem("cluster")


Defining an actor:

class MyActor(myArg1: String) extends Actor {

   // initial actions here

   def receive = {
      case x: Robot => ...



Creating an instance of an actor with one constructor argument:

val myActorRef =
    system.actorOf(Props(classOf[MyActor], "arg1"), "main")


Sending a message to an actor (ActorRef):

myActorRef ! "string message"


Configure your cluster node (use ipconfig/ifconfig to get your LAN ip address)
in src/main/resources/application.conf:

akka {
  remote {
    netty.tcp {
      hostname = "X.X.X.X" # your LAN ip address

  # add your own host and some other nodes to the initial cluster
  cluster {
    seed-nodes = [



Creating a broadcast router actor:

val broadcastRouter = system.actorOf(Props.empty.withRouter(
        ClusterRouterSettings(totalInstances = 100, routeesPath = "/user/main", allowLocalRoutees = true, useRole = None))),
      name = "router")


How to let an actor do something every 10 seconds:

import scala.concurrent.duration.FiniteDuration
import java.util.concurrent.TimeUnit
import scala.concurrent.ExecutionContext.Implicits._

context.system.scheduler.schedule(FiniteDuration(10, TimeUnit.SECONDS), FiniteDuration(10, TimeUnit.SECONDS)) {
    self ! "every 10 seconds" // send message to myself every 10 seconds


Robot Cheat Sheet

Creating a random robot code

val robotCode = RobotCode.createRandomCode("your name here")


Creating a robot from a robot code

val robot = robotCode.evaluate


Performance optimization: Evaluating a list of robot codes using multiple cores:

import scala.concurrent.ExecutionContext.Implicits._

val myRobots = myRobotCodes.par.map(_.evaluate)


Print some debug info about a collection of robots

robot.DebugHelper.print(candidates: Seq[Robot])


Scala Cheat Sheet (List handling)

Concatenate two lists

val both = list1 ++ list2


Shuffling a list

import scala.util.Random
val shuffled = Random.shuffle(List(1, 2, 3))


Get a random number between 0 and 100 (not including 100):



Sorting a list of objects by a numeric property

val sorted = myList.sortBy(_.myProperty)


Take first 100 elements of a list

val part = list.take(100)


Take everything except first 100 elements of a list

val part = list.drop(100)


This entry was posted in Uncategorized. Bookmark the permalink.