Scala 如何防止在Akka中通过ask模式重复处理失败消息?
经过一些调查后,更新了原始描述: 当我通过Ask模式向参与者发送消息时,参与者失败并出现异常,消息将再次被处理 重试的确切次数各不相同,我无法理解其原理。在我的大多数实验中,失败的消息会重试3次Scala 如何防止在Akka中通过ask模式重复处理失败消息?,scala,akka,fault-tolerance,Scala,Akka,Fault Tolerance,经过一些调查后,更新了原始描述: 当我通过Ask模式向参与者发送消息时,参与者失败并出现异常,消息将再次被处理 重试的确切次数各不相同,我无法理解其原理。在我的大多数实验中,失败的消息会重试3次 如何微调Ask模式行为(例如,设置可预测的重试次数) 你的问题让我有些困惑,因为我认为你所描述的默认值不是默认值。默认情况下,失败的消息不会被处理3次。默认情况下,如果Actor中发生异常,则会重新启动并继续下一条消息。看 因此,对于您的问题: 我如何实现重新启动actor的逻辑,但是 跳过失败的消息,
如何微调Ask模式行为(例如,设置可预测的重试次数) 你的问题让我有些困惑,因为我认为你所描述的默认值不是默认值。默认情况下,失败的消息不会被处理3次。默认情况下,如果Actor中发生异常,则会重新启动并继续下一条消息。看 因此,对于您的问题: 我如何实现重新启动actor的逻辑,但是 跳过失败的消息,不尝试一次又一次地处理它 这是默认值 如何实现guardian actor上的默认监控器?如果 有人知道如何在他们的Github中找到这个地方,它会 很有帮助
在消息本身中添加多次尝试如何?当消息传入时,创建一个计数器递增的克隆。然后,您可以检查尝试次数是否超过限制,并在参与者本身中删除消息
case RetryMessage(有效负载,计数器)if counter>limit=>//放弃它
我做了一些调查,结果发现使用ask模式导致了所有这些重试。我更新了描述