A Tour of (Advanced) Akka Features in 40 Minutes - doag.org · Akka Features in 40 Minutes Johan...

95
A Tour of (Advanced) Akka Features in 40 Minutes Johan Janssen, Info Support @johanjanssen42

Transcript of A Tour of (Advanced) Akka Features in 40 Minutes - doag.org · Akka Features in 40 Minutes Johan...

Page 1: A Tour of (Advanced) Akka Features in 40 Minutes - doag.org · Akka Features in 40 Minutes Johan Janssen, Info Support @johanjanssen42. Content Why Akka? Local actor Remote actor

A Tour of (Advanced) Akka Features in 40 Minutes

Johan Janssen, Info Support@johanjanssen42

Page 2: A Tour of (Advanced) Akka Features in 40 Minutes - doag.org · Akka Features in 40 Minutes Johan Janssen, Info Support @johanjanssen42. Content Why Akka? Local actor Remote actor

Content

▪ Why Akka?

▪ Local actor

▪ Remote actor

▪ Scheduling

▪ Cluster

▪ Routing

▪ Cluster singleton

▪ Sharding

▪ Persistence

▪ Akka HTTP

▪ Finite State Machines

▪ Conclusion

▪ Questions

Page 3: A Tour of (Advanced) Akka Features in 40 Minutes - doag.org · Akka Features in 40 Minutes Johan Janssen, Info Support @johanjanssen42. Content Why Akka? Local actor Remote actor

Why Akka?

Page 4: A Tour of (Advanced) Akka Features in 40 Minutes - doag.org · Akka Features in 40 Minutes Johan Janssen, Info Support @johanjanssen42. Content Why Akka? Local actor Remote actor

Why Akka?

▪ Concurrent

▪ Scalable

▪ Fault tolerant

▪ More natural programming experience when connecting to other systems

▪ Easy to use?

Page 5: A Tour of (Advanced) Akka Features in 40 Minutes - doag.org · Akka Features in 40 Minutes Johan Janssen, Info Support @johanjanssen42. Content Why Akka? Local actor Remote actor
Page 6: A Tour of (Advanced) Akka Features in 40 Minutes - doag.org · Akka Features in 40 Minutes Johan Janssen, Info Support @johanjanssen42. Content Why Akka? Local actor Remote actor

Local actor

Page 7: A Tour of (Advanced) Akka Features in 40 Minutes - doag.org · Akka Features in 40 Minutes Johan Janssen, Info Support @johanjanssen42. Content Why Akka? Local actor Remote actor

Local actor

Actor on JVM 1

Page 8: A Tour of (Advanced) Akka Features in 40 Minutes - doag.org · Akka Features in 40 Minutes Johan Janssen, Info Support @johanjanssen42. Content Why Akka? Local actor Remote actor

Local actor

Coordinator Actor

Hello conference

Page 9: A Tour of (Advanced) Akka Features in 40 Minutes - doag.org · Akka Features in 40 Minutes Johan Janssen, Info Support @johanjanssen42. Content Why Akka? Local actor Remote actor

Local actor

Coordinator Actor

println("Hello conference")

Page 10: A Tour of (Advanced) Akka Features in 40 Minutes - doag.org · Akka Features in 40 Minutes Johan Janssen, Info Support @johanjanssen42. Content Why Akka? Local actor Remote actor

class Worker extends Actor {def receive = {case x =>println(x)

}}

val system = ActorSystem("ExampleActorSystem")

val workerActorRef = system.actorOf(Props[Worker])workerActorRef ! "Hello conference"

Scala

Page 11: A Tour of (Advanced) Akka Features in 40 Minutes - doag.org · Akka Features in 40 Minutes Johan Janssen, Info Support @johanjanssen42. Content Why Akka? Local actor Remote actor

Remote actor

Page 12: A Tour of (Advanced) Akka Features in 40 Minutes - doag.org · Akka Features in 40 Minutes Johan Janssen, Info Support @johanjanssen42. Content Why Akka? Local actor Remote actor

Remote actor

Actor on JVM 1

Actor on JVM 2

Page 13: A Tour of (Advanced) Akka Features in 40 Minutes - doag.org · Akka Features in 40 Minutes Johan Janssen, Info Support @johanjanssen42. Content Why Akka? Local actor Remote actor

val workerActorRef = system.actorOf(Props[Worker])workerActorRef ! "Hello conference"

val workerActorRef = context.actorSelection("akka.tcp://[email protected]:9005/user/workerActor")

workerActorRef ! "Hello conference"

Page 14: A Tour of (Advanced) Akka Features in 40 Minutes - doag.org · Akka Features in 40 Minutes Johan Janssen, Info Support @johanjanssen42. Content Why Akka? Local actor Remote actor

akka {actor {provider =

"akka.remote.RemoteActorRefProvider"}remote {enabled-transports =

["akka.remote.netty.tcp"]netty.tcp {hostname = "127.0.0.1"port = 9002

Page 15: A Tour of (Advanced) Akka Features in 40 Minutes - doag.org · Akka Features in 40 Minutes Johan Janssen, Info Support @johanjanssen42. Content Why Akka? Local actor Remote actor

Remote actor

Coordinator actor

Worker actor

StartMessage

Hello conference

Page 16: A Tour of (Advanced) Akka Features in 40 Minutes - doag.org · Akka Features in 40 Minutes Johan Janssen, Info Support @johanjanssen42. Content Why Akka? Local actor Remote actor

Remote actor

Coordinator actor

Worker actor

WorkerMessage

Greetings from the coordinator:

Hello Conference

Page 17: A Tour of (Advanced) Akka Features in 40 Minutes - doag.org · Akka Features in 40 Minutes Johan Janssen, Info Support @johanjanssen42. Content Why Akka? Local actor Remote actor

Remote actor

Coordinator actor

Worker actor

WorkerResponseMessage

Item processed successfully

Page 18: A Tour of (Advanced) Akka Features in 40 Minutes - doag.org · Akka Features in 40 Minutes Johan Janssen, Info Support @johanjanssen42. Content Why Akka? Local actor Remote actor

Scheduling

Page 19: A Tour of (Advanced) Akka Features in 40 Minutes - doag.org · Akka Features in 40 Minutes Johan Janssen, Info Support @johanjanssen42. Content Why Akka? Local actor Remote actor

Scheduling

Actor

Scheduled once after 1 second

Tick

Scheduled every 5 seconds

Tock

system.scheduler.scheduleOnce(1 seconds, scheduleReceiveActor, Tick)

system.scheduler.schedule(0 seconds, 5 seconds, scheduleReceiveActor, Tock)

Page 20: A Tour of (Advanced) Akka Features in 40 Minutes - doag.org · Akka Features in 40 Minutes Johan Janssen, Info Support @johanjanssen42. Content Why Akka? Local actor Remote actor

Scheduling

▪ Does not work for fixed point in time like 17:00– Use Quartz

Page 21: A Tour of (Advanced) Akka Features in 40 Minutes - doag.org · Akka Features in 40 Minutes Johan Janssen, Info Support @johanjanssen42. Content Why Akka? Local actor Remote actor

Cluster

Page 22: A Tour of (Advanced) Akka Features in 40 Minutes - doag.org · Akka Features in 40 Minutes Johan Janssen, Info Support @johanjanssen42. Content Why Akka? Local actor Remote actor

Cluster

ActorSystemon JVM 1

ActorSystemon JVM 3

ActorSystemon JVM 2

ActorSystemon JVM 4

Page 23: A Tour of (Advanced) Akka Features in 40 Minutes - doag.org · Akka Features in 40 Minutes Johan Janssen, Info Support @johanjanssen42. Content Why Akka? Local actor Remote actor

Seed nodes

▪ Contact points for automatically joining a cluster

Page 24: A Tour of (Advanced) Akka Features in 40 Minutes - doag.org · Akka Features in 40 Minutes Johan Janssen, Info Support @johanjanssen42. Content Why Akka? Local actor Remote actor

akka {

cluster {

seed-nodes = [

"akka.tcp://[email protected]:2551",

"akka.tcp://[email protected]:2552"

]

}

}

Page 25: A Tour of (Advanced) Akka Features in 40 Minutes - doag.org · Akka Features in 40 Minutes Johan Janssen, Info Support @johanjanssen42. Content Why Akka? Local actor Remote actor

Cluster Worker Node

Port 2551

Association failed with [akka.tcp://[email protected]:2552

Page 26: A Tour of (Advanced) Akka Features in 40 Minutes - doag.org · Akka Features in 40 Minutes Johan Janssen, Info Support @johanjanssen42. Content Why Akka? Local actor Remote actor

Cluster Worker Node

Port 2551

Worker Node

Port 2552

Member Up with IP: 127.0.0.1 and port: 2551Member Up with IP: 127.0.0.1 and port: 2552

Member Up with IP: 127.0.0.1 and port: 2551Member Up with IP: 127.0.0.1 and port: 2552

Page 27: A Tour of (Advanced) Akka Features in 40 Minutes - doag.org · Akka Features in 40 Minutes Johan Janssen, Info Support @johanjanssen42. Content Why Akka? Local actor Remote actor

Cluster Worker Node

Port 2551

Worker Node

Port 2552

Member Up with IP: 127.0.0.1 and port: 2550

Member Up with IP: 127.0.0.1 and port: 2550

CoordinatorNode

Port 2550

Page 28: A Tour of (Advanced) Akka Features in 40 Minutes - doag.org · Akka Features in 40 Minutes Johan Janssen, Info Support @johanjanssen42. Content Why Akka? Local actor Remote actor

Cluster Worker Node

Port 2551

Worker Node

Port 2552

CoordinatorNode

Port 2550

RegisterWorker

RegisterWorker

Page 29: A Tour of (Advanced) Akka Features in 40 Minutes - doag.org · Akka Features in 40 Minutes Johan Janssen, Info Support @johanjanssen42. Content Why Akka? Local actor Remote actor

Cluster Worker Node

Port 2551

Worker Node

Port 2552

CoordinatorNode

Port 2550

Worker registered with IP: 127.0.0.1 and port: 2551Worker registered with IP: 127.0.0.1 and port: 2552

Page 30: A Tour of (Advanced) Akka Features in 40 Minutes - doag.org · Akka Features in 40 Minutes Johan Janssen, Info Support @johanjanssen42. Content Why Akka? Local actor Remote actor

Routing

Page 31: A Tour of (Advanced) Akka Features in 40 Minutes - doag.org · Akka Features in 40 Minutes Johan Janssen, Info Support @johanjanssen42. Content Why Akka? Local actor Remote actor

Routing

Actor on JVM 1

Actor on JVM 3

Actor on JVM 4

Actor on JVM 2

Loadbalancer

Page 32: A Tour of (Advanced) Akka Features in 40 Minutes - doag.org · Akka Features in 40 Minutes Johan Janssen, Info Support @johanjanssen42. Content Why Akka? Local actor Remote actor

akka {actor {provider = "akka.cluster.ClusterActorRefProvider"

deployment {/coordinator/router {router = round-robin-poolnr-of-instances = 10routees.paths = ["/user/emptystringactor"]cluster {enabled = onallow-local-routees = off

}}

}}

}

Page 33: A Tour of (Advanced) Akka Features in 40 Minutes - doag.org · Akka Features in 40 Minutes Johan Janssen, Info Support @johanjanssen42. Content Why Akka? Local actor Remote actor

Routing

CoordinatorActor on

JVM 1

EmptyStringActor on

JVM 3

EmptyStringActor on

JVM 4

EmptyStringActor on

JVM 2""

Page 34: A Tour of (Advanced) Akka Features in 40 Minutes - doag.org · Akka Features in 40 Minutes Johan Janssen, Info Support @johanjanssen42. Content Why Akka? Local actor Remote actor

Routing

CoordinatorActor on

JVM 1

EmptyStringActor on

JVM 3

EmptyStringActor on

JVM 4

EmptyStringActor on

JVM 2""

HashMap[hostname, counter]

Page 35: A Tour of (Advanced) Akka Features in 40 Minutes - doag.org · Akka Features in 40 Minutes Johan Janssen, Info Support @johanjanssen42. Content Why Akka? Local actor Remote actor

Routing

CoordinatorActor on

JVM 1

EmptyStringActor on

JVM 3

EmptyStringActor on

JVM 4

EmptyStringActor on

JVM 2

""

Page 36: A Tour of (Advanced) Akka Features in 40 Minutes - doag.org · Akka Features in 40 Minutes Johan Janssen, Info Support @johanjanssen42. Content Why Akka? Local actor Remote actor

Routing

CoordinatorActor on

JVM 1

EmptyStringActor on

JVM 3

EmptyStringActor on

JVM 4

EmptyStringActor on

JVM 2

""

Page 37: A Tour of (Advanced) Akka Features in 40 Minutes - doag.org · Akka Features in 40 Minutes Johan Janssen, Info Support @johanjanssen42. Content Why Akka? Local actor Remote actor

Cluster singleton

Page 38: A Tour of (Advanced) Akka Features in 40 Minutes - doag.org · Akka Features in 40 Minutes Johan Janssen, Info Support @johanjanssen42. Content Why Akka? Local actor Remote actor

Cluster singleton

▪ Only one instance of the actor in the cluster

▪ (Re)created on the oldest node

▪ Can be used for instance for scheduling/caching

Page 39: A Tour of (Advanced) Akka Features in 40 Minutes - doag.org · Akka Features in 40 Minutes Johan Janssen, Info Support @johanjanssen42. Content Why Akka? Local actor Remote actor

Cluster singleton

Actor on JVM 1

Other actors on

JVM 3

Other actors on

JVM 4

Singleton actor and

other actors on JVM 2

Page 40: A Tour of (Advanced) Akka Features in 40 Minutes - doag.org · Akka Features in 40 Minutes Johan Janssen, Info Support @johanjanssen42. Content Why Akka? Local actor Remote actor

Cluster singleton

CoordinatorEmptyString

Actor on JVM 3

EmptyStringActor on

JVM 4

EmptyStringActor on

JVM 2""

Page 41: A Tour of (Advanced) Akka Features in 40 Minutes - doag.org · Akka Features in 40 Minutes Johan Janssen, Info Support @johanjanssen42. Content Why Akka? Local actor Remote actor

Cluster singleton

CoordinatorEmptyString

Actor on JVM 3

EmptyStringActor on

JVM 4

EmptyStringActor on

JVM 2""

HashMap[hostname, counter]

Page 42: A Tour of (Advanced) Akka Features in 40 Minutes - doag.org · Akka Features in 40 Minutes Johan Janssen, Info Support @johanjanssen42. Content Why Akka? Local actor Remote actor

Cluster singleton

CoordinatorEmptyString

Actor on JVM 3

EmptyStringActor on

JVM 4

EmptyStringActor on

JVM 2""

Page 43: A Tour of (Advanced) Akka Features in 40 Minutes - doag.org · Akka Features in 40 Minutes Johan Janssen, Info Support @johanjanssen42. Content Why Akka? Local actor Remote actor

Cluster singleton

CoordinatorEmptyString

Actor on JVM 3

EmptyStringActor on

JVM 4

EmptyStringActor on

JVM 2""

HashMap[hostname, counter]

Page 44: A Tour of (Advanced) Akka Features in 40 Minutes - doag.org · Akka Features in 40 Minutes Johan Janssen, Info Support @johanjanssen42. Content Why Akka? Local actor Remote actor

Cluster singleton

CoordinatorEmptyString

Actor on JVM 3

EmptyStringActor on

JVM 4

EmptyStringActor on

JVM 2Crash

Page 45: A Tour of (Advanced) Akka Features in 40 Minutes - doag.org · Akka Features in 40 Minutes Johan Janssen, Info Support @johanjanssen42. Content Why Akka? Local actor Remote actor

Cluster singleton

CoordinatorEmptyString

Actor on JVM 3

EmptyStringActor on

JVM 4

""

Page 46: A Tour of (Advanced) Akka Features in 40 Minutes - doag.org · Akka Features in 40 Minutes Johan Janssen, Info Support @johanjanssen42. Content Why Akka? Local actor Remote actor

Cluster singleton

CoordinatorEmptyString

Actor on JVM 3

EmptyStringActor on

JVM 4

""

HashMap[hostname, counter]

Page 47: A Tour of (Advanced) Akka Features in 40 Minutes - doag.org · Akka Features in 40 Minutes Johan Janssen, Info Support @johanjanssen42. Content Why Akka? Local actor Remote actor

Cluster singleton

CoordinatorEmptyString

Actor on JVM 3

EmptyStringActor on

JVM 4

""

Page 48: A Tour of (Advanced) Akka Features in 40 Minutes - doag.org · Akka Features in 40 Minutes Johan Janssen, Info Support @johanjanssen42. Content Why Akka? Local actor Remote actor

Cluster singleton

CoordinatorEmptyString

Actor on JVM 3

EmptyStringActor on

JVM 4

""

HashMap[hostname, counter]

Page 49: A Tour of (Advanced) Akka Features in 40 Minutes - doag.org · Akka Features in 40 Minutes Johan Janssen, Info Support @johanjanssen42. Content Why Akka? Local actor Remote actor

Sharding

Page 50: A Tour of (Advanced) Akka Features in 40 Minutes - doag.org · Akka Features in 40 Minutes Johan Janssen, Info Support @johanjanssen42. Content Why Akka? Local actor Remote actor

Sharding

▪ Dividing a set of actors over a cluster

▪ Actors will be divided into groups called shards

▪ It will divide based on a logical identifier

Page 51: A Tour of (Advanced) Akka Features in 40 Minutes - doag.org · Akka Features in 40 Minutes Johan Janssen, Info Support @johanjanssen42. Content Why Akka? Local actor Remote actor

Sharding

Actor on JVM 1

oddShard on

JVM 3

evenShard on

JVM 2

0, 2, 4, 6, 8

1, 3, 5, 7, 9

Page 52: A Tour of (Advanced) Akka Features in 40 Minutes - doag.org · Akka Features in 40 Minutes Johan Janssen, Info Support @johanjanssen42. Content Why Akka? Local actor Remote actor

Persistence

Page 53: A Tour of (Advanced) Akka Features in 40 Minutes - doag.org · Akka Features in 40 Minutes Johan Janssen, Info Support @johanjanssen42. Content Why Akka? Local actor Remote actor

Persistence

▪ Store actor information

▪ Recover after crash

▪ Possibility to take snapshots

Page 54: A Tour of (Advanced) Akka Features in 40 Minutes - doag.org · Akka Features in 40 Minutes Johan Janssen, Info Support @johanjanssen42. Content Why Akka? Local actor Remote actor

Example without persistence

Actor

Cobol

Page 55: A Tour of (Advanced) Akka Features in 40 Minutes - doag.org · Akka Features in 40 Minutes Johan Janssen, Info Support @johanjanssen42. Content Why Akka? Local actor Remote actor

Example without persistence

Actor

Cobol

Page 56: A Tour of (Advanced) Akka Features in 40 Minutes - doag.org · Akka Features in 40 Minutes Johan Janssen, Info Support @johanjanssen42. Content Why Akka? Local actor Remote actor

Example without persistence

Cobol

Actor

Page 57: A Tour of (Advanced) Akka Features in 40 Minutes - doag.org · Akka Features in 40 Minutes Johan Janssen, Info Support @johanjanssen42. Content Why Akka? Local actor Remote actor

Example without persistence

Actor

Java Cobol

Page 58: A Tour of (Advanced) Akka Features in 40 Minutes - doag.org · Akka Features in 40 Minutes Johan Janssen, Info Support @johanjanssen42. Content Why Akka? Local actor Remote actor

Example without persistence

CobolJava

ActorCrash

Restart

Page 59: A Tour of (Advanced) Akka Features in 40 Minutes - doag.org · Akka Features in 40 Minutes Johan Janssen, Info Support @johanjanssen42. Content Why Akka? Local actor Remote actor

Example without persistence

Actor

Page 60: A Tour of (Advanced) Akka Features in 40 Minutes - doag.org · Akka Features in 40 Minutes Johan Janssen, Info Support @johanjanssen42. Content Why Akka? Local actor Remote actor

Example without persistence

Actor

Scala

Page 61: A Tour of (Advanced) Akka Features in 40 Minutes - doag.org · Akka Features in 40 Minutes Johan Janssen, Info Support @johanjanssen42. Content Why Akka? Local actor Remote actor

Example without persistence

Scala

Actor

Page 62: A Tour of (Advanced) Akka Features in 40 Minutes - doag.org · Akka Features in 40 Minutes Johan Janssen, Info Support @johanjanssen42. Content Why Akka? Local actor Remote actor

Persistence

PersistentActor

Cobol

Command

Journal

Page 63: A Tour of (Advanced) Akka Features in 40 Minutes - doag.org · Akka Features in 40 Minutes Johan Janssen, Info Support @johanjanssen42. Content Why Akka? Local actor Remote actor

Persistence

Journal

CobolEvent

PersistentActor

Page 64: A Tour of (Advanced) Akka Features in 40 Minutes - doag.org · Akka Features in 40 Minutes Johan Janssen, Info Support @johanjanssen42. Content Why Akka? Local actor Remote actor

Persistence

Journal

ACKPersistentActor

CobolEvent

Page 65: A Tour of (Advanced) Akka Features in 40 Minutes - doag.org · Akka Features in 40 Minutes Johan Janssen, Info Support @johanjanssen42. Content Why Akka? Local actor Remote actor

Persistence

Cobol

Journal

CobolEvent

PersistentActor

Page 66: A Tour of (Advanced) Akka Features in 40 Minutes - doag.org · Akka Features in 40 Minutes Johan Janssen, Info Support @johanjanssen42. Content Why Akka? Local actor Remote actor

Persistence

Cobol

Journal

CobolEvent

PersistentActor

JavaEvent

Page 67: A Tour of (Advanced) Akka Features in 40 Minutes - doag.org · Akka Features in 40 Minutes Johan Janssen, Info Support @johanjanssen42. Content Why Akka? Local actor Remote actor

Persistence

CobolJava

Journal

CobolEvent

PersistentActorCrash

Restart JavaEvent

Page 68: A Tour of (Advanced) Akka Features in 40 Minutes - doag.org · Akka Features in 40 Minutes Johan Janssen, Info Support @johanjanssen42. Content Why Akka? Local actor Remote actor

Persistence

Journal

CobolEvent

PersistentActor

JavaEvent

Page 69: A Tour of (Advanced) Akka Features in 40 Minutes - doag.org · Akka Features in 40 Minutes Johan Janssen, Info Support @johanjanssen42. Content Why Akka? Local actor Remote actor

Persistence

CobolJava

Journal

CobolEvent

PersistentActor

JavaEvent

Scala

Page 70: A Tour of (Advanced) Akka Features in 40 Minutes - doag.org · Akka Features in 40 Minutes Johan Janssen, Info Support @johanjanssen42. Content Why Akka? Local actor Remote actor

Persistence

CobolJavaScala

Journal

CobolEvent

PersistentActor

JavaEvent

Page 71: A Tour of (Advanced) Akka Features in 40 Minutes - doag.org · Akka Features in 40 Minutes Johan Janssen, Info Support @johanjanssen42. Content Why Akka? Local actor Remote actor

Snapshots

JournalPersistentActor

Snapshot store

State until Event C++

C++

Cobol

Page 72: A Tour of (Advanced) Akka Features in 40 Minutes - doag.org · Akka Features in 40 Minutes Johan Janssen, Info Support @johanjanssen42. Content Why Akka? Local actor Remote actor

Snapshots

JournalPersistentActor

Snapshot store

State until Event C++

C++

Cobol

Page 73: A Tour of (Advanced) Akka Features in 40 Minutes - doag.org · Akka Features in 40 Minutes Johan Janssen, Info Support @johanjanssen42. Content Why Akka? Local actor Remote actor

Snapshots

JournalPersistentActor

Snapshot store

State until Event C++ C++

Cobol

Page 74: A Tour of (Advanced) Akka Features in 40 Minutes - doag.org · Akka Features in 40 Minutes Johan Janssen, Info Support @johanjanssen42. Content Why Akka? Local actor Remote actor

Snapshots

JournalPersistentActor

Snapshot store

State until Event C++

JavaC++

Cobol

Page 75: A Tour of (Advanced) Akka Features in 40 Minutes - doag.org · Akka Features in 40 Minutes Johan Janssen, Info Support @johanjanssen42. Content Why Akka? Local actor Remote actor

Snapshots

JournalPersistentActor

Snapshot store

State until Event C++

Crash

Restart

C++

Cobol

Java

Page 76: A Tour of (Advanced) Akka Features in 40 Minutes - doag.org · Akka Features in 40 Minutes Johan Janssen, Info Support @johanjanssen42. Content Why Akka? Local actor Remote actor

Snapshots

JournalPersistentActor

Snapshot store

State until Event C++ C++

Cobol

Java

Page 77: A Tour of (Advanced) Akka Features in 40 Minutes - doag.org · Akka Features in 40 Minutes Johan Janssen, Info Support @johanjanssen42. Content Why Akka? Local actor Remote actor

Snapshots

CobolC++

JournalPersistentActor

Snapshot store

State until Event C++ C++

Cobol

Java

Page 78: A Tour of (Advanced) Akka Features in 40 Minutes - doag.org · Akka Features in 40 Minutes Johan Janssen, Info Support @johanjanssen42. Content Why Akka? Local actor Remote actor

Snapshots

CobolC++Java

JournalPersistentActor

Snapshot store

State until Event C++ C++

Cobol

Java

Page 79: A Tour of (Advanced) Akka Features in 40 Minutes - doag.org · Akka Features in 40 Minutes Johan Janssen, Info Support @johanjanssen42. Content Why Akka? Local actor Remote actor

Snapshots

CobolC++JavaScala

JournalPersistentActor

Snapshot store

State until Event C++ C++

Cobol

Java

Page 80: A Tour of (Advanced) Akka Features in 40 Minutes - doag.org · Akka Features in 40 Minutes Johan Janssen, Info Support @johanjanssen42. Content Why Akka? Local actor Remote actor

Akka HTTP

Page 81: A Tour of (Advanced) Akka Features in 40 Minutes - doag.org · Akka Features in 40 Minutes Johan Janssen, Info Support @johanjanssen42. Content Why Akka? Local actor Remote actor

Akka HTTP

Actor on JVM 1

Actor on JVM 2

Page 82: A Tour of (Advanced) Akka Features in 40 Minutes - doag.org · Akka Features in 40 Minutes Johan Janssen, Info Support @johanjanssen42. Content Why Akka? Local actor Remote actor

Finite State Machine

Page 83: A Tour of (Advanced) Akka Features in 40 Minutes - doag.org · Akka Features in 40 Minutes Johan Janssen, Info Support @johanjanssen42. Content Why Akka? Local actor Remote actor

Finite State Machine

▪ State

▪ Event

Page 84: A Tour of (Advanced) Akka Features in 40 Minutes - doag.org · Akka Features in 40 Minutes Johan Janssen, Info Support @johanjanssen42. Content Why Akka? Local actor Remote actor

Finite State Machines (FSM)

InprogressProject

CrappyProject

NewProject

Progress, iterationProgress, iteration

Progress, iteration

NoProgressProgress, 2

Page 85: A Tour of (Advanced) Akka Features in 40 Minutes - doag.org · Akka Features in 40 Minutes Johan Janssen, Info Support @johanjanssen42. Content Why Akka? Local actor Remote actor

Finite State Machines (FSM)

InprogressProject

CrappyProject

NewProject

Work harder

Iteration: 0

Page 86: A Tour of (Advanced) Akka Features in 40 Minutes - doag.org · Akka Features in 40 Minutes Johan Janssen, Info Support @johanjanssen42. Content Why Akka? Local actor Remote actor

Finite State Machines (FSM)

InprogressProject

CrappyProject

NewProject

Good job!

Iteration: 0

Page 87: A Tour of (Advanced) Akka Features in 40 Minutes - doag.org · Akka Features in 40 Minutes Johan Janssen, Info Support @johanjanssen42. Content Why Akka? Local actor Remote actor

Finite State Machines (FSM)

InprogressProject

CrappyProject

NewProject

Wrong direction

Iteration: 0

Page 88: A Tour of (Advanced) Akka Features in 40 Minutes - doag.org · Akka Features in 40 Minutes Johan Janssen, Info Support @johanjanssen42. Content Why Akka? Local actor Remote actor

Finite State Machines (FSM)

InprogressProject

CrappyProject

NewProject

Use Akka

Iteration: 0

Page 89: A Tour of (Advanced) Akka Features in 40 Minutes - doag.org · Akka Features in 40 Minutes Johan Janssen, Info Support @johanjanssen42. Content Why Akka? Local actor Remote actor

Finite State Machines (FSM)

InprogressProject

CrappyProject

NewProject

Good job!

Iteration: 1

Page 90: A Tour of (Advanced) Akka Features in 40 Minutes - doag.org · Akka Features in 40 Minutes Johan Janssen, Info Support @johanjanssen42. Content Why Akka? Local actor Remote actor

Finite State Machines (FSM)

InprogressProject

CrappyProject

NewProject

Wrong direction

Iteration: 1

Page 91: A Tour of (Advanced) Akka Features in 40 Minutes - doag.org · Akka Features in 40 Minutes Johan Janssen, Info Support @johanjanssen42. Content Why Akka? Local actor Remote actor

Finite State Machines (FSM)

InprogressProject

CrappyProject

NewProject

Use Akka

Iteration: 1

Page 92: A Tour of (Advanced) Akka Features in 40 Minutes - doag.org · Akka Features in 40 Minutes Johan Janssen, Info Support @johanjanssen42. Content Why Akka? Local actor Remote actor

Finite State Machines (FSM)

InprogressProject

CrappyProject

NewProject Get another job!

Iteration: 2

Page 93: A Tour of (Advanced) Akka Features in 40 Minutes - doag.org · Akka Features in 40 Minutes Johan Janssen, Info Support @johanjanssen42. Content Why Akka? Local actor Remote actor

Conclusion

Page 94: A Tour of (Advanced) Akka Features in 40 Minutes - doag.org · Akka Features in 40 Minutes Johan Janssen, Info Support @johanjanssen42. Content Why Akka? Local actor Remote actor

Conclusion

▪ Akka can be used with Scala or Java

▪ There is even a .NET version of Akka

▪ Akka is really powerful

▪ Akka is quite easy to use

▪ Some features are still experimental

Page 95: A Tour of (Advanced) Akka Features in 40 Minutes - doag.org · Akka Features in 40 Minutes Johan Janssen, Info Support @johanjanssen42. Content Why Akka? Local actor Remote actor

Questions

Johan Janssen @johanjanssen42GitHub: https://github.com/johanjanssen/Akka-examples