背景:
在项目开发中,有时候会出现接口调用失败,本身调用又是异步的,如果是因为一些网络问题请求超时,总想可以重试几次把任务处理掉。
一些RPC框架,比如dubbo都是有重试机制的,但是并不是每一个项目多会使用dubbo框架,常规的小项目有时候直接使用http进行不同项目之间的交互。
个人想法:
使用spring aop和自定义注解来,建立一套重试机制。
根据切入点和自定义注解,来完成重试工作。
exps:
定义一个注解:
1 importorg.springframework.stereotype.Component;2
3 importjava.lang.annotation.Documented;4 importjava.lang.annotation.ElementType;5 importjava.lang.annotation.Retention;6 importjava.lang.annotation.RetentionPolicy;7 importjava.lang.annotation.Target;8
9 @Retention(RetentionPolicy.RUNTIME)10 @Target(ElementType.METHOD)11 @Documented12 @Component13 public @interfaceRetryProcess {14 //重试的次数
15 int value() default 1;16 }
importorg.aspectj.lang.JoinPoint;importorg.aspectj.lang.annotation.AfterThrowing;importorg.aspectj.lang.annotation.As