java重试 retryContext.getRetryCount

2023-11-05

添加依赖

        <!--重试-->
        <dependency>
            <groupId>org.springframework.retry</groupId>
            <artifactId>spring-retry</artifactId>
<!--            <version>1.2.4.RELEASE</version>-->
        </dependency>

配置类

package com.bsk.demo.config;

import cn.com.infosec.netsign.agent.exception.NetSignAgentException;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.retry.support.RetryTemplate;

/**
 * @Author yangquan
 * @Date 2023/3/8 16:53
 */
@Configuration
public class RetryTemplateConfiguration {
    /**
     * RetryTemplate对象
     *
     * @return 重试模板
     */
    @Bean
    public RetryTemplate gainRetryTemplate() {

        //添加依赖不要加版本号
//         <dependency>
//            <groupId>org.springframework.retry</groupId>
//            <artifactId>spring-retry</artifactId>
//            <!-- <version>1.2.4.RELEASE</version> -->
//        </dependency>

        return RetryTemplate.builder()
                //重连4次
                .maxAttempts(4)
                .retryOn(Exception.class)
                .retryOn(NetSignAgentException.class)
                .traversingCauses()
                .build();
    }

}

代码

package com.bsk.demo.controller;

import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.retry.support.RetryTemplate;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * 重试
 *
 * @Author yangquan
 * @Date 2023/3/8 15:44
 */
@Slf4j
@RestController
public class RetryTemplateController {

    @Autowired
    private RetryTemplate retryTemplate;

    @RequestMapping("retryTemplate")
    public Boolean test() {
        try {
            Boolean rtnBool = retryTemplate.execute(retryContext -> {
                int turn = retryContext.getRetryCount();
//                if (turn > 0)
                    log.info(">>>>>>>>>>>>>>>>>>【下载信用报告】第" + turn + "次重试<<<<<<<<<<<<<<<<<<<<<<<<<<");
                    getName();
                return true;
            }, recoverContext -> {
                log.info(">>>>>>>>>>>>>>>>>>【下载信用报告】重试次数达到最大<<<<<<<<<<<<<<<<<<<<<<<<<<<<", recoverContext.getLastThrowable());
                return false;
            });

            if(rtnBool){
                return true;
            }
            return false;
        } catch (RuntimeException e) {
            e.printStackTrace();
        }
        return false;
    }

    public String getName() {
        throw new RuntimeException();
//        return "1";
    }

}

这辈子坚持与不坚持都不可怕,怕的是独自走在坚持的道路上!!!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java重试 retryContext.getRetryCount 的相关文章

随机推荐

  • 【Transformer】21、AdaViT: Adaptive Tokens for Efficient Vision Transformer

    文章目录 一 背景 二 方法 三 效果 一 背景 Transformer 在多个任务上都取得了亮眼的表现 在计算机视觉中 一般是对输入图像切分成多个 patch 然后计算 patch 之间的自注意力实现下游任务 但由于自注意力机制的计算量是
  • ajax跨域session失效,request跨域获取session失效

    如下代码 传到另外一个域名就获取不到session了 localhost 12402 Home Index Session MemberUser 123456 string url api Home GetTop8FileDown stri
  • 【算法】直接插入排序解析

    活动地址 CSDN21天学习挑战赛 作者 柒号华仔 个人主页 欢迎访问我的主页 个人信条 星光不问赶路人 岁月不负有心人 个人方向 主要方向为5G 同时兼顾其他网络协议 编解码协议 C C linux 云原生等 感兴趣的小伙伴可以关注我 一
  • 正则表达式分割图片和匹配图片正则

    正则表达式分割图片 正则表达式 又称规则表达式 英语 Regular Expression 在代码中常简写为regex regexp或RE 计算机科学的一个概念 正则表达式通常被用来检索 替换那些符合某个模式 规则 的文本 正则表达式是对字
  • Centos7一点心德

    1 在centos7中发现没有table键补全的命令 需要手动去输出 效率不高 但是yum提供了自动补的命令安装 root localhost systemctl restart htt 死活补全不了 常用的命令还可以接受 碰到不常用的命令
  • 【大数据之Kafka】十三、Kafka消费者生产经验之分区的分配及再平衡、数据积压和消费者事务

    1 分区的分配及再平衡 一个consumer group中有多个consumer组成 一个 topic有多个partition组成 使用分区分配策略决定由哪个consumer来消费哪个partition的数据 Kafka有四种主流的分区分配
  • 增加tomcat并发量

    之前在做tomcat的最大并发量测试 现总结如下 tomcat默认的连接是线程阻塞的 即protocol配置为 HTTP 1 1 那么tomcat的最大连接数就受maxThreads和account的限制 maxThreads是最大的线程数
  • Altium Designer 19.1.18 - 将修改后的 PCB 封装更新到当前 PCB 中

    文章目录 将修改后的 PCB 封装更新到当前 PCB 中 参考 将修改后的 PCB 封装更新到当前 PCB 中 打开 PCB Library 选择需要更新到当前 PCB 中的 PCB 封装 使用鼠标右键选择 Update PCB With
  • 一文详解微服务架构

    要理解微服务 首先要先理解不是微服务的那些 通常跟微服务相对的是单体应用 即将所有功能都打包成在一个独立单元的应用程序 从单体应用到微服务并不是一蹴而就的 这是一个逐渐演变的过程 本文将以一个网上超市应用为例来说明这一过程 最初的需求 几年
  • 火柴棒等式 C语言

    Problem Description 给你n根火柴棍 你可以拼出多少个形如 A B C 的等式 等式中的A B C是用火柴棍拼出的整数 若该数非零 则最高位不能是0 用火柴棍拼数字0 9的拼法如图所示 注意 1 加号与等号各自需要两根火柴
  • 微信中发现的问题,做一分析(见同目录其他文)

    1 基本语法 这包括static final transient等关键字的作用 foreach循环的原理等等 今天面试我问你static关键字有哪些作用 如果你答出static修饰变量 修饰方法我会认为你合格 答出静态块 我会认为你不错 答
  • linux 网络编程---->多路复用:select实例!

    好吧 我承认找了好久 网上都没有像样的完整的实例 然后自己参照书自己写一个吧 gt server 端代码 gt server c include
  • 上传图片的方法(大白话讲解)

    上传图片的方法 在上传文件的时候需要知道其原理 因为我们的数据库是无法存储数据的 所以我们只能使用地址来找 所以数据库中应该村的是文件路径 其次上传图片是属于上传文件的一种方式 所以也要学会上传文件的方法 在之后呢也要注意上传图片和对象的关
  • allowedOriginPatterns和allowedOrigins方法有什么不同

    allowedOriginPatterns 和 allowedOrigins 都是用来设置允许跨域请求的来源 其中 allowedOriginPatterns 是在 Spring 5 3 版本引入的新方法 而 allowedOrigins
  • qt layout 颜色_Qt开源作品6-通用视频控件

    一 前言 在之前做的视频监控系统中 根据不同的用户需要 做了好多种视频监控内核 有ffmpeg内核的 有vlc内核的 有mpv内核的 还有海康sdk内核的 为了做成通用的功能 不同内核很方便的切换 比如pro直接改一个DEFINE的变量名
  • Liunx下Intel无线网卡驱动安装

    首先查看网卡型号 指令 lspci grep i net 如果是Intel的无线网卡 可以参考以下方法 1 在这个页面中查找对应的无线网卡型号 以我的8260为例 前面是型号 后面是最低系统内核版本 往下翻可以查看各个型号的下载链接 系统内
  • 用户id生成规则_阿里/网易/美团/58用户画像中的ID体系建设

    前言 梳理完标签画像体系的业务需求后 作为数据产品经理 就要开始了对画像体系的整体设计 其中首要遇到的就是用户ID体系的打通相关的问题 公司各业务线ID繁多 数据割裂 如何才能尽可能关联更多的数据 以准确的描绘出一个用户的画像呢 接下来我们
  • MySQL的系统数据库

    information schema 用途 存储数据库对象相关信息 例如用户表 列 权限 字符集 分区等 表 TABLES 提供了关于数据库中表的信息 含视图 SHOW TABLES FROM DatabaseName的结果取自该表 COL
  • QT CREATOR 插件开发:添加新的工程类型(下)

    Core BaseFileWizard 类Core BaseFileWizard在 coreplugin basefilewizard h 文件中声明 class CORE EXPORT BaseFileWizard public IWiz
  • java重试 retryContext.getRetryCount

    添加依赖