• 在spring boot中调用第三方接口时重试问题


    文章目录


    前言

    spring-retry对第三方接口做重试,和处理操作


    一、引入依赖

    1. org.springframework.retry
    2. spring-retry
    3. org.springframework
    4. spring-aop
    5. 5.3.29
    6. org.springframework
    7. spring-aspects
    8. 5.3.29

    二、使用步骤

    1.控制层

    1. @RestController
    2. @RequestMapping("/test")
    3. public class TestController {
    4. /**
    5. * 在需要重试的接口上添加@Retryable注解,并指定重试策略
    6. * value = Exception.class 表示重试的异常类型
    7. * maxAttempts = 3 表示重试次数
    8. * backoff = @Backoff(delay = 1000,multiplier = 1.5) 表示重试间隔时间 其默认间隔时间为1秒
    9. * multiplier = 1.5 表示间隔时间的倍数 延迟的倍数
    10. * @param code
    11. * @return
    12. * @throws Exception
    13. */
    14. @GetMapping("/get/{code}")
    15. @Retryable(value = Exception.class, maxAttempts = 3, backoff = @Backoff(delay = 1000,multiplier = 1.5))
    16. public String get(@PathVariable Integer code) throws Exception {
    17. System.out.println("code = " + System.currentTimeMillis());
    18. if (code == 1){
    19. throw new Exception("get重试");
    20. }
    21. return "get正常" + System.currentTimeMillis();
    22. }
    23. /**
    24. * 重试次数用完 还是失败的话
    25. * 就会进入recover方法
    26. * 对于@Recover注解的方法 方法的返回值要和Retryable注解的方法的返回值保持一致
    27. * 异常也要和重试发生的异常类型一致
    28. * 该回调方法与重试方法要写在一个实现类里面
    29. * @param e
    30. * @param code
    31. * @return
    32. */
    33. @Recover
    34. public String recover(Exception e,Integer code){
    35. return "重试后进入的方法 可以拿到异常和参数";
    36. }
    37. }

    2.启动类 

    想要使用重试功能 要在启动类上开启该功能

    1. @SpringBootApplication
    2. @EnableRetry //开启重试功能
    3. public class SpringRetryApplication {
    4. public static void main(String[] args) {
    5. SpringApplication.run(SpringRetryApplication.class, args);
    6. }
    7. }


    总结

    大致的工作流程是 如果请求的实现里面出现了指定的异常 就会自动重试再次执行该方法

    如果在你设置的重试次数之后 还有错误 那就是第三方接口的问他 需要在回调方法里面记录下异常

    或者联系第三方接口的提供者处理该异常

  • 相关阅读:
    失效的访问控制及漏洞复现
    横向AlGaN/GaN基SBD结构及物理模型数据库的开发
    基于LLMs构建产业多智能体
    多项式算法6:分治 FFT
    安装torch113、cuda116并运行demo【Transformer】
    Springboot整合Mybatis-Plus
    浅析实施WMS仓储管理系统项目的几个要点
    Linux内核开发 | Linux内核目录结构分析(5.4.32)
    基于Java毕业设计高校二手交易平台源码+系统+mysql+lw文档+部署软件
    Mysql InnoDB Buffer Pool
  • 原文地址:https://blog.csdn.net/qq_55648724/article/details/134365905