如果我想念一些关于Akka.Net和远程Actor场景的问题。
如果我实现了Actor A(本地)并部署了Actor B(远程),然后从A发送消息到B,那么这很容易。
发送消息后,B告诉A结果(稍后某个时候)。 出于这个原因,我们正在将A与行为转换为等待"等待"状态。
此外,这就像一个魅力,但可能发生的是B因任何原因而失败。 如果是这样,A正在等待答案,并将在此状态下冻结。
如何正确处理这种情况/如何设计?
答案 0 :(得分:0)
Waiting
状态时,actor可以将消息计划到自身(Context.System.Scheduler.ScheduleTellOnceCancellable(timeout, Self, cancelMessage, ActorRefs.NoSender)
),这将在所需的超时后触发。因此,等待的演员行为将对响应或取消做出反应,即隐藏所有其他消息 - 在处理响应或取消后可能发生取消。targetActor.Ask<Response>(request, timeout)
。您还可以从HOCON配置设置全局超时:akka.actor.ask-timeout = 10s
。