使用 PartialFunction 链来扩展actor
来源:互联网 发布:怎么查看mac系统版本 编辑:程序博客网 时间:2024/06/05 04:46
使用 PartialFunction 链来扩展actor
有一个稍高级但是非常有用的方法是定义基础的消息处理器并通过继承或委托来对它进行扩展,使用 PartialFunction.orElse 链.
或:
有一个稍高级但是非常有用的方法是定义基础的消息处理器并通过继承或委托来对它进行扩展,使用 PartialFunction.orElse 链.
abstract class GenericActor extends Actor { // to be defined in subclassing actor def specificMessageHandler: Receive // generic message handler def genericMessageHandler: Receive = { case event ⇒ printf("generic: %s\n", event) } def receive = specificMessageHandler orElse genericMessageHandler} class SpecificActor extends GenericActor { def specificMessageHandler = { case event: MyMsg ⇒ printf("specific: %s\n", event.subject) }} case class MyMsg(subject: String)
import akka.actor._import akka.actor.Propsimport akka.event.Loggingimport akka.actor.ActorSystemimport akka.util.Timeoutimport akka.pattern.askimport scala.concurrent.duration._import akka.actor.ReceiveTimeoutimport akka.pattern.gracefulStopimport scala.concurrent.{Await,Future}object Test4{val prop1 = Props[SpecificActor]val sytem = ActorSystem("mtSystem")implicit val timeout = Timeout(5 seconds)//创建Actorval myActor = sytem.actorOf(prop1,"first")def main(args: Array[String]): Unit = { myActor ? MyMsg("Hello")}}abstract class GenericActor extends Actor{def specificMessageHandle:Receivedef genericMessageHandle:Receive = {case event => println("Generic: %s\n",event)}def receive = specificMessageHandle orElse genericMessageHandle}class SpecificActor extends GenericActor{def specificMessageHandle = {case event:MyMsg => println("SpecificActor:" + event.subject) }}case class MyMsg(subject:String)
或:
trait ComposableActor extends Actor { private var receives: List[Receive] = List() protected def registerReceive(receive: Receive) { receives = receive :: receives } def receive = receives reduce { _ orElse _ }} class MyComposableActor extends ComposableActor { override def preStart() { registerReceive({ case "foo" ⇒ /* Do something */ }) registerReceive({ case "bar" ⇒ /* Do something */ }) }}
0 0
- 使用 PartialFunction 链来扩展actor
- PartialFunction examples
- 使用SWIG来扩展Python
- Scala actor的使用
- 使用C来扩展python功能
- 使用NOIDMIF来扩展 hardware inventory
- 使用IDMIF来扩展 hardware inventory
- 使用C++来写Python扩展模块
- 如何使用C来扩展python功能
- 使用自定义变量来扩展高级细分
- 如何使用C来扩展python功能。
- [Python自动化]使用C来扩展Python
- 7.8 使用GROUPING_ID()来扩展报告
- 使用c语言来扩展python模块
- PHP使用imagick扩展来合并图像
- PHP使用imagick扩展来合并图像
- C#3.0 中使用扩展方法来扩展接口
- C#3.0 中使用扩展方法来扩展接口
- Java字节码资料4
- WinForm Show()和ShowDialog()的区别:
- BaseAnimation是基于开源的APP,致力于收集各种动画效果(最新版本1.3)
- Hadoop生成HFile直接入库HBase心得
- struct sockaddr与struct sockaddr_in ,struct sockaddr_un的区别和联系
- 使用 PartialFunction 链来扩展actor
- PHP判断请求是否为HTTPS
- 分布式系统互斥算法---集中式算法
- 用控件实现自定义右键菜单
- ubuntu下使用星际译王Stardict
- 形态学操作
- ios 手写代码的controller与storyboard里的controller跳转
- HDOJ-3460Ancient Printer(Trie)
- Unity游戏开发的数学与物理 1 ( 物体延水平方向运动 )