重试正确性难保证而且不利于运维,原因是重试设计依赖正常逻辑异常或重试根源的臆测。与此同时使用recover方法在结束执行做恢复操作。而我们的调用者LogicClient无需关注重试,通过重试者Retryer实现约定接口功能,同时 Retryer需要对重试逻辑做出响应和处理, Retryer具体重试处理又交给真正的IRtry接口的实现类OdpsRetry完成。通过采用命令模式,优雅实现正常逻辑和重试逻辑分离,同时通过构建重试者角色,实现正常逻辑和重试逻辑的分离,让重试有更好的扩展性。2)spring-retry 规范正常和重试逻辑spring-retry是一个开源工具包,目前可用的版本为1.1.2.RELEASE,该工具把重试操作模板定制化,可以设置重试策略和回退策略。另一个就是重试根源的断言对象使用的是doWithRetry的Exception 异常实例,不符合正常内部断言的返回设计。
暂无评论