我是Scala Akka的新手。假设我正在生成一个Configuration
儿童演员
object Configuration {
def apply(): Behavior[ConfigurationMessage] = Behaviors.setup(context => new Configuration(context))
}
现在,我需要在我的HTTP路由器中使用相同的上下文ActorContext[ConfigurationMessage]
来进行一些操作。
如何在中创建相同的ActorContext
ActorContext
不能在与其关联的参与者之外使用,包括在HTTP路由器中。任何从actor泄漏的ActorContext
(例如,通过将其作为消息发送(在设计上都会抛出异常,并且如果在其actor之外使用,则不会对大多数操作执行任何操作。
ActorContext
上可能在相关参与者之外使用的唯一操作是:
context.ask
和朋友可以很容易地在目标RecipientRef
上用返回ask
的Future
替换,消息发送发生在将来的foreach
回调中context.executionContext
:可以很容易地使用system.executionContext
(通常是相同的(或通过调度员查找context.pipeToSelf
可能最好在将来作为foreach
回调中的发送来完成context.scheduleOnce
最好直接使用系统调度器context.self
有点毫无意义,因为你必须已经有了ActorRef
才能泄露ActorContext
context.system
同样毫无意义,因为您已经拥有了该系统