加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – Akka:如何在延迟时间间隔延长的情况下安排重试失败?

发布时间:2020-12-14 16:34:52 所属栏目:Java 来源:网络整理
导读:让一个演员再次尝试失败的好方法是什么,但重试之间的时间间隔越来越长?假设我希望演员在15秒后再次30秒钟再次尝试一次,那么每一分钟都会有限次. 这是我想出的: 执行实际工作的actor的方法是可选的 RetryInfo参数,如果存在,则包含的号码 我们目前正在重试
让一个演员再次尝试失败的好方法是什么,但重试之间的时间间隔越来越长?假设我希望演员在15秒后再次30秒钟再次尝试一次,那么每一分钟都会有限次.

这是我想出的:

>执行实际工作的actor的方法是可选的
RetryInfo参数,如果存在,则包含的号码
我们目前正在重试
>失败时,actor将向retryCount 1发送一个新的ScheduleRetryMessage,然后抛出一个RuntimeException
>另一个演员监督工作者演员,使用新的OneForOneStrategy(-1,Duration.Inf())返回Resume作为其指令,actor没有状态,所以Resume应该OK
>在接收到ScheduleRetryMessage时,演员将会

>如果retryCount< MAX_RETRIES:使用Akka的调度程序安排在所需延迟后发送RetryMessage
>其他:最后放弃,发送消息给另一个演员错误报告

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

解决方法

你可以有一个主管启动工人演员.文档中的提示是为工作人员声明一个大小为1的路由器.主管将跟踪重试次数,然后根据需要安排发送给工作人员的消息.

即使您将创建另一层演员,这对我来说似乎更清晰,因为您将监督功能从工作人员中排除.理想情况下,您可以让这位1名主管对n名工作人员,但我认为您必须使用生命周期监控来从儿童演员获得失败.在这种情况下,您只需保留[ActorRef,Int]的地图即可跟踪所有受监管人员的重试次数.监督政策将恢复,但是如果您达到最大的重试次数,您可以向有罪的ActorRef发送毒药.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读