当前位置: 首页 > news >正文

SpringBoot 整合 Spring Retry——优雅实现接口重试

接口调用失败时,直接返回错误不是最佳选择,有些场景重试一下就成功了。Spring Retry 提供了声明式重试机制。

一、引入依赖

<dependency><groupId>org.springframework.retry</groupId><artifactId>spring-retry</artifactId></dependency><dependency><groupId>org.aspectj</groupId><artifactId>aspectjweaver</artifactId></dependency>

二、开启重试

@SpringBootApplication@EnableRetrypublicclassSeckillApplication{publicstaticvoidmain(String[]args){SpringApplication.run(SeckillApplication.class,args);}}

三、使用 @Retryable

@ServicepublicclassPaymentService{privatestaticfinalLoggerlog=LoggerFactory.getLogger(PaymentService.class);@Retryable(value={RemoteAccessException.class,TimeoutException.class},maxAttempts=3,backoff=@Backoff(delay=1000,multiplier=2))publicbooleanrefund(StringorderNo){log.info("退款请求: {}",orderNo);// 调用第三方支付接口returnthirdPartyRefund(orderNo);}@Recoverpublicbooleanrecover(RemoteAccessExceptione,StringorderNo){log.error("退款失败,记录到异常表: {}",orderNo,e);// 记录到失败表,人工处理returnfalse;}}

四、自定义重试策略

@ConfigurationpublicclassRetryConfig{@BeanpublicRetryTemplateretryTemplate(){RetryTemplatetemplate=newRetryTemplate();// 重试策略:最多重试5次,间隔递增ExponentialBackOffPolicybackOff=newExponentialBackOffPolicy();backOff.setInitialInterval(1000);backOff.setMultiplier(2);backOff.setMaxInterval(10000);template.setBackOffPolicy(backOff);// 异常判断:哪些异常需要重试SimpleRetryPolicyretryPolicy=newSimpleRetryPolicy();retryPolicy.setMaxAttempts(5);template.setRetryPolicy(retryPolicy);returntemplate;}}

五、编程式重试

@ServicepublicclassOrderService{@AutowiredprivateRetryTemplateretryTemplate;publicbooleanprocessOrder(LongorderId){returnretryTemplate.execute(context->{log.info("处理订单,第{}次尝试",context.getRetryCount()+1);returndoProcess(orderId);},context->{log.error("最终失败",context.getLastThrowable());returnfalse;});}}

六、重试配置

spring:retry:max-attempts:3# 全局最大重试次数

七、秒杀系统应用

@ServicepublicclassSeckillService{@Retryable(value=OptimisticLockException.class,maxAttempts=3,backoff=@Backoff(delay=200))publicbooleandeductStock(LongproductId){// 乐观锁失败时自动重试returnproductMapper.updateStock(productId)>0;}}

💡 觉得有用的话,点赞 + 关注【张老师技术栈】吧!

http://www.jsqmd.com/news/1295667/

相关文章:

  • Go容器化部署优化:Go Practical Tips中的GOMAXPROCS调整与性能调优
  • SpringBoot+Vue汽车销售管理系统开发实践
  • 5分钟快速上手:免费跨平台图表工具draw.io桌面版完整指南
  • 高产率生物反应器价格解析与工艺装备一体化价值 - 生活动态圈
  • Pixelle-Video:基于ComfyUI架构的AI短视频生成解决方案
  • 苹果开学返校季装备焕新全攻略!2026 国补叠加京东学生认证教育优惠,手机、平板、电脑三大件折上折,学生党一套操作最高多省上千元! - 生活动态圈
  • 2026年中学生单词学习软件选型指南:3步避开三大坑,用对工具效率翻倍
  • PersonaLive终极指南:5分钟打造你的实时人像动画虚拟主播
  • 2026年 乙烯基/乙烯基重防腐厂家推荐榜单:环保耐蚀与高性能防腐蚀涂装源头工厂精选 - 优企名品
  • 区分流通梯队!广州香奈儿鞋服高价变现实操指南 - 全国二奢机构参考
  • SpringBoot集成Kafka实战:从核心配置到生产级调优
  • 潮玩抽奖小程序架构设计与高并发优化实践
  • 高性能容器化Android系统架构揭秘:Waydroid实现原理深度解析
  • 从流量收割到用户价值经营:营销推广的本质演变
  • 算法面试——二叉树:最大深度、验证 BST、层序遍历
  • 海关AEO高级认证实战信息系统安全要求达标全路径
  • 2026 年 7 月上海闵行钻戒回收交易手册与防坑干货‑闵行周边钻饰变现参考 - 讯息早知道
  • 2026北京海瑞温斯顿首饰回收新规,哪些隐形计价规则决定最终成交价? - 全国二奢机构参考
  • 跨省搬家运送家居杂物如何节约运费?自费真人无广告大件物流 TOP4 中立测评榜单,可直接照搬 - 时讯资讯
  • 2026年英语听说学习工具深度测评:三大主流APP技术解析与实测效果
  • 2026年Q3南京小型撕碎机刀片供应厂家—材质精准匹配,覆盖全工况场景 - 优企名品
  • 【单片机毕业设计】基于传感器的自动开盖垃圾桶监测系统设计 基于 STM32 与 OLED 的垃圾桶状态监测装置设计(013101)
  • 训练数据溯源断链?揭秘开源模型中隐藏的13种隐式数据指纹,以及如何用SHA-3+ZKP实现不可抵赖审计
  • 沈阳软件开发指南:提升用户体验的实用策略
  • AIGC 与美术管线的版权与一致性:风格锁定的工程实践
  • Vue 3生态革新:基于Vuetify的企业级管理界面完整解决方案
  • 2026商城小程序开发哪家好,资深开发公司详细介绍 - 小富子呀
  • 精益改造定制厂家:唯杰自动化模块化柔性方案深度解析 - 生活动态圈
  • 【单片机毕设案例分享】 基于 STM32 的便携式老年人体征监测设备开发 基于三轴传感器的步数统计与跌倒检测系统(013301)
  • 2026上海黄金回收门店调研|市场数据、乱象分析与优质门店测评 - 全国二奢机构参考