sealed trait Command case class SubmitOrder( items: List[String] ) extends Command def apply( stockActor: ActorRef[StockActor.Command] ): Behavior[Command] = Behaviors.receiveMessage { case SubmitOrder(items) => val orderId = generateOrderId() // メッセージ送信(ノンブロッキング) stockActor ! ReserveStock(orderId, items) // 即座に次の処理へ Behaviors.same } } object StockActor { sealed trait Command case class ReserveStock( orderId: String, items: List[String] ) extends Command def apply(): Behavior[Command] = Behaviors.receiveMessage { case ReserveStock(orderId, items) => // 在庫引当処理(非同期) reserveStock(orderId, items) Behaviors.same } }