learning scala akka ask_pattern

package com.example

import  akka.actor._
import  akka.util.Timeout

object Tutorial_03_Ask_Pattern extends  App {
   val system = ActorSystem("DonutStoreActorySystem")

   val donutInfoActor = system.actorOf(Props[DonutInfoActor], name="DonutInfoActor")

   import DonutStoreProtocal._
   import akka.pattern._
   import scala.concurrent.ExecutionContext.Implicits.global
   import scala.concurrent.duration._

   implicit val timeout = Timeout(5 second)

   val vanillaDonutFound = donutInfoActor ? Info("vanilla")
   for {
      found <- vanillaDonutFound
   } yield (println(s"Vanilla donut found = $found"))

   val glazedDountFound = donutInfoActor ? Info("glazed")
   for {
      found <- glazedDountFound
   } yield  (println(s"Glazed donut found = $found"))

   Thread.sleep(5000)

   system.terminate();

   object DonutStoreProtocal{
      case class Info(name: String)
   }

   class DonutInfoActor extends Actor with ActorLogging {
      import Tutorial_03_Ask_Pattern.DonutStoreProtocal._

     override def receive: Receive = {
        case Info(name) if name == "vanilla"  =>
         log.info(s"Found valid $name donut")
         sender ! true
        case Info(name) =>
         log.info(s"$name donut is not supported")
         sender ! false
     }
   }
}

result:

Vanilla donut found = true
[INFO] [08/23/2019 16:37:51.502] [DonutStoreActorySystem-akka.actor.default-dispatcher-5] [akka://DonutStoreActorySystem/user/DonutInfoActor] Found valid vanilla donut
Glazed donut found = false
[INFO] [08/23/2019 16:37:51.512] [DonutStoreActorySystem-akka.actor.default-dispatcher-5] [akka://DonutStoreActorySystem/user/DonutInfoActor] glazed donut is not supported

 

转载于:https://www.cnblogs.com/lianghong881018/p/11401047.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值