我是Scala Akka的新手。假设我正在生成一个Configuration
儿童演员,
object Configuration {
def apply(): Behavior[ConfigurationMessage] = Behaviors.setup(context => new Configuration(context))
}
现在,我需要在HTTP路由器中使用相同的上下文ActorContext[ConfigurationMessage]
来执行一些操作。
如何在那里创建相同的ActorContext
1条答案
按热度按时间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
同样没有意义,因为您已经有了系统