当前位置: 首页 > 知识库问答 >
问题:

Akka:如何在延迟间隔不断增加的情况下安排失败重试?

巫马玉堂
2023-03-14
    null

这是一个好的解决方案还是有更好的方法?

共有1个答案

苍兴怀
2023-03-14

在这种情况下,我使用标准监督。父/监督参与者在时间窗口内定义重试。重试的worker子程序只是在preRestart()中延迟重新调度导致失败的消息。

如果重试子级相当复杂,则可以考虑互连一个中间参与者。那个演员只是把监督升级。在preRestart上,中间参与者调度一个(延迟的)重启消息。由于中间actor保留了它的状态,它可以简单地重新启动工作actor(带延迟)。

正如您所看到的,延迟部分可能在preRestart中或在worker的启动中。

 类似资料:
  • 我正在使用JUnit自动化功能测试。我遇到了一个问题:如果我遵循规则“每个测试方法一个(重要的)断言”,那么每个测试用例最终会有一堆6行测试方法(17个是迄今为止最大的数字)。如果我将它们全部放入一个测试方法中,我必须注释掉失败的断言,否则一半的测试永远不会启动。 我不喜欢第一种方式,因为它启动浏览器的次数太多,而且浏览器启动登录/注销似乎比测试运行本身更“昂贵”和耗时。 第二种方法也不好,因为它

  • 我在一个Spray应用程序中使用ask模式调用一个Actor,并将结果作为HTTP响应返回。我将故障从参与者映射到自定义错误代码。 当authActor发送一个失败时,这可以正常工作,但是如果authActor抛出一个异常,则在请求超时完成之前什么也不会发生。例如: 这样,如果它是预期的错误(即ServiceException),则通过创建一个失败来处理它。如果它是意外的,它会立即返回一个失败,以

  • 我不喜欢延迟加载,因为在用户体验方面,它看起来非常难看。但是,我了解其好处(更快的页面加载、低带宽、高页面速度分数等) 我计划编写一个javascript代码,它将: 呆在底层 这样,我就不会丢失任何速度分数(因为它会像平常一样加载延迟加载的图像),但是,当一切都完成时,我也会加载完整的图像,所以用户不会注意到。(我们在加载实时聊天脚本时也做了同样的操作,效果非常好) 它可能看起来像这样: 我不是

  • 在我的代码中进行一系列计算后,我有了一个,其值为 然后,我需要将这个乘以,我希望计算出的值为

  • 我经常看到两个参与者之间有很长的延迟(60+秒),从第一个参与者发送消息到第二个参与者,以及第二个参与者的方法随消息实际调用时。我可以寻找哪些类型的东西来调试这个问题? ActorA的每个实例都使用为ActorB发送一条消息。在ActorA中调用方法并在ActorB的开始处获得另一个时间戳之后,我立即收集了一个毫秒时间戳(使用)。这些时间戳之间的间隔一致为60秒或更长。具体地说,当按时间绘制时,该

  • 我有一个有两条消息的参与者,第一个负责在mongoDB中插入数据,第二个参与者负责在elasticsearch、InserInMongo和Inserins中插入数据。也就是说,当mongoDB插入操作失败或ES插入操作因某些异常而失败时,会出现这种情况,我正在做类似的事情 在这里,我想如果mongoFuture失败,那么我抓住它的异常,它应该继续与esFuture 或者如果两个未来都失败了,我得到