Scala Akka Actors

Scala

Actor-based concurrency system with Akka

Tech Stack

Scala 3.4
Akka 2.9
sbt
Akka Streams
Cluster

Features

Actor-based concurrency
Message passing model
Fault tolerance with supervision
Akka Streams for I/O
Cluster sharding

Code Sample

Worker.scala
import akka.actor.typed.{ActorRef, Behavior}
import akka.actor.typed.scaladsl.Behaviors

object Worker {
  sealed trait Command
  final case class ProcessJob(id: String, replyTo: ActorRef[Result]) extends Command
  final case class Result(id: String, status: String)

  def apply(): Behavior[Command] = Behaviors.receive { (context, message) =>
    message match {
      case ProcessJob(id, replyTo) =>
        context.log.info(s"Processing job $id")
        val result = process(id)
        replyTo ! Result(id, "completed")
        Behaviors.same
    }
  }

  private def process(id: String): String = {
    Thread.sleep(100)
    s"Result for $id"
  }
}
View Source Docker Hub Live Demo