Scala---Akka Actor(二)actor创建以及Ask模式

在本文中,我们将对actor的创建进行介绍,并主要讲解一下Ask模式。虽然在Actor中,更受欢迎的是Tell模式,但是我们还是有必要了解一下稍微复杂一点的Ask模式。
摘要由CSDN通过智能技术生成

在本文中,我们将对actor的创建进行介绍,并主要讲解一下Ask模式。虽然在Actor中,更受欢迎的是Tell模式,但是我们还是有必要了解一下稍微复杂一点的Ask模式。


一、Actor的创建

一个actor对象是由actorOf()方法创建的,需要一个Props参数和一个名字(字符串)。

object DemoActor {
  /**
   * Create Props for an actor of this type.
   *
   * @param magicNumber The magic number to be passed to this actor’s constructor.
   * @return a Props for creating this actor, which can then be further configured
   *         (e.g. calling `.withDispatcher()` on it)
   */
  def props(magicNumber: Int): Props = Props(new DemoActor(magicNumber))
}

class DemoActor(magicNumber: Int) extends Actor {
  def receive = {
    case x: Int => sender() ! (x + magicNumber)
  }
}

class SomeOtherActor extends Actor {
  // Props(new DemoActor(42)) would not be safe
  context.actorOf(DemoActor.props(42), "demo")
  // ...
}
上面是Akka官方推荐的构建方式,一个class用来定义Actor,一个object用来提供props方法。Props的内容会在之后的学习中,在进行详细的研究。


二、Ask模式

我们在上面的代码中,可以看到如下的消息传递方式:

sender() ! (x + magicNumber)
在这里,一个actor在receive函数中,向消息的源actor发送消息,使用tell(符号为:!)。这就是Tell模式,这个模式理解起来很简单,就是给别的actor发送一个消息,之后不阻塞,不记忆(事情没有发生过的样子)。没有等待消息回应的机制,接收到消息的ac
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值