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

前端之家收集整理的这篇文章主要介绍了java – Akka:如何在延迟时间间隔延长的情况下安排重试失败?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
让一个演员再次尝试失败的好方法是什么,但重试之间的时间间隔越来越长?假设我希望演员在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发送毒药.

猜你在找的Java相关文章