reply在这里指的是什么



我正在阅读这份Akka文档,https://doc.akka.io/docs/akka/current/typed/actor-lifecycle.html#spawning-children,以及这个代码片段,

CompletionStage<ActorRef<HelloWorld.Greet>> greeter =
AskPattern.ask(
system,
replyTo ->
new SpawnProtocol.Spawn<>(HelloWorld.create(), "greeter", Props.empty(), replyTo),
timeout,
system.scheduler());

这是使用Ask模式创建一个儿童演员。我的问题是关于这篇文章,

replyTo ->
new SpawnProtocol.Spawn<>(HelloWorld.create(), "greeter", Props.empty(), replyTo),

它是一个表示工厂函数的λ,它接受一个replyTo参数,并返回一个actor。但是这里的replyTo是什么?它来自哪里,指的是什么?很难对其有一个非常清晰的了解。

谢谢你的帮助!

终于弄清楚了,让我回答我自己的问题。

基本上,Ask模式产生一个未来,表示被询问的参与者的回答。换言之,我们询问,我们得到了一个代表占位符的未来,当它准备好时,将由真正的响应来实现。

那么,阿卡怎么知道如何实现这个未来呢?这就是replyTo参数适用的地方。Akka实际上在actor系统中创建了一个临时actor,replyTo参数用于表示这个临时actor。当被询问的参与者回复其从Ask接收到的消息时,这个临时参与者开始运行,并用被询问参与者回复的响应完成未来。

希望这是有道理的,希望这能帮助其他有同样问题的人。阿卡很棒,但我真的希望他们有更好的文档,这样我们就不必这么费力地搜索了。

最新更新