Scala Akka如何在路由中创建类型化的ActorContext

ni65a41a  于 2022-11-05  发布在  Scala
关注(0)|答案(1)|浏览(118)

我是Scala Akka的新手。假设我正在生成一个Configuration儿童演员,

object Configuration {

  def apply(): Behavior[ConfigurationMessage] = Behaviors.setup(context => new Configuration(context))

}

现在,我需要在HTTP路由器中使用相同的上下文ActorContext[ConfigurationMessage]来执行一些操作。
如何在那里创建相同的ActorContext

w6mmgewl

w6mmgewl1#

ActorContext不能在与之关联的参与者之外使用,包括在HTTP路由器中。任何从参与者泄漏的ActorContext(例如,通过将其作为消息发送),如果在其参与者之外使用,将根据设计抛出异常,并且不会对大多数操作执行任何操作。
ActorContext上唯一可能在关联执行元外部使用的操作是:

  • context.ask和friends可以很容易地用Future来替换--在目标RecipientRef上返回ask,并在将来的foreach回调中发送消息。
  • context.executionContext:可以很容易地使用system.executionContext(通常是相同的),或者通过调度程序查找
  • context.pipeToSelf可能最好在将来作为foreach回调中的发送来完成
  • context.scheduleOnce最好直接使用系统调度程序完成
  • context.self是没有意义的,因为您必须已经有ActorRef,才能泄漏ActorContext
  • context.system同样没有意义,因为您已经有了系统

相关问题