Akka.net - 重新连接远程演员

时间:2017-12-13 15:01:48

标签: akka.net

如果我想念一些关于Akka.Net和远程Actor场景的问题。

如果我实现了Actor A(本地)并部署了Actor B(远程),然后从A发送消息到B,那么这很容易。

发送消息后,B告诉A结果(稍后某个时候)。 出于这个原因,我们正在将A与行为转换为等待"等待"状态。

此外,这就像一个魅力,但可能发生的是B因任何原因而失败。 如果是这样,A正在等待答案,并将在此状态下冻结。

如何正确处理这种情况/如何设计?

1 个答案:

答案 0 :(得分:0)

  1. 基于消息的惯用方法:将行为更改为Waiting状态时,actor可以将消息计划到自身(Context.System.Scheduler.ScheduleTellOnceCancellable(timeout, Self, cancelMessage, ActorRefs.NoSender)),这将在所需的超时后触发。因此,等待的演员行为将对响应或取消做出反应,即隐藏所有其他消息 - 在处理响应或取消后可能发生取消。
  2. 非惯用,可能也更昂贵(就CPU /内存而言),但更简单:只需使用targetActor.Ask<Response>(request, timeout)。您还可以从HOCON配置设置全局超时:akka.actor.ask-timeout = 10s