是否可以使用 Akka Patterns.ask() 来让经典 actor 询问类型化 actor?

问题描述 投票:0回答:1

使用 Akka (Java) 我尝试使用询问模式 (akka.pattern.Patterns.ask),其中询问者是经典演员,被询问者是类型演员。我正在尝试在经典演员中做这样的事情

Patterns.ask(Adapter.toClassic(typedActor), new TypedActor.Message(Adapter.toTyped(self())), timeout));

在键入的演员中,可以看到并回复消息(例如,如下所示),但询问超时

msg.replyTo.tell(new Response());

这可能吗?如果可以,您能帮我举一个简单的例子来说明如何在 Java 中执行此操作吗?

java akka
1个回答
0
投票

不,绝对不应该这样做。

Patterns.ask
旨在阻塞直到收到响应。在典型的 Actor 消息处理程序中,这是一种非常糟糕的做法,并且可能会导致您看到的超时,因为您将很快耗尽线程。

Actor 被设计为异步的,Actor 之间的通信也应该是异步的。要从一个演员到另一个演员执行类似的操作,请使用

Context.ask
或类似的东西:https://doc.akka.io/docs/akka/current/typed/interaction-patterns.html

这会异步发送您的消息,然后(收到回复时)在处理程序的新执行中调整响应。

© www.soinside.com 2019 - 2024. All rights reserved.