SpringRetry踩坑記錄

2021-09-25 10:08:54 字數 1818 閱讀 2086

retry是spring提供的異常重試框架,只需要引入如下依賴即可安心食用。

org.springframework.retry

spring-retry

@enableretry:此註解用於開啟重試框架,可以修飾在springboot啟動類上面,也可以修飾在需要重試的類上

proxytargetclass:boolean型別,用於指明**方式【true:cglib**,false:jdk動態**】預設使用jdk動態**

@retryable

value:class型別,用於指定需要重試的異常型別,

include:class型別,作用於value類似,區別尚未分析

exclude:class型別,指定不需要重試的異常型別

maxattemps:int型別,指定最多重試次數,預設3

backoff:backoff型別,指明補償機制

@backoff

delay:指定延遲後重試,預設為1000l,即1s後開始重試 ;

multiplier:指定延遲的倍數

@recover

當重試次數耗盡依然出現異常時,執行此異常對應的@recover方法。

異常型別需要與recover方法引數型別保持一致,

recover方法返回值需要與重試方法返回值保證一致

springboot啟動類

//指明**方式為cglib**

@enableretry(proxytargetclass = true)

public static void main(string args) }

業務類

package com.example.retrystudy.service;

import lombok.extern.slf4j.slf4j;

import org.springframework.retry.annotation.backoff;

import org.springframework.retry.annotation.recover;

import org.springframework.retry.annotation.retryable;

import org.springframework.stereotype.service;

/** * @author hcq

* @date 2019/6/30 21:56

*/@service

@slf4j

public class retryserviceimpl implements retryservice,maxattempts = 5,backoff = @backoff(delay = 500,multiplier = 1))

public string retry()

@override

@recover

public string recover(runtimeexception e)

@override

public string handlerretry()

}

一、基於jdk動態**時,只**介面中的方法,所以需要注意以下事項二、基於cglib動態**時,可以**目標類所有可繼承方法

@retryable或者@recover修飾的方法必須可以被繼承(不能用final,private修飾)

@retryable與 @recover直接修飾在方法實現上

Python 踩坑記錄

1.浮點數判斷 工作中遇到類似下面邏輯判斷 i 1 while i 1.5 i i 0.1 print i在想象中i應該停止在1.5就不輸出了,但是實際的輸出結果是無限迴圈。這是因為在計算機的邏輯中,浮點數的儲存規則決定了不是所有的浮點數都能準確表示,有些是不準確的,只是無限接近。如0.1轉換為二進...

Java踩坑記錄

1.quartz整合spring框架service層物件注入為null解決方案 jobdetailfactorybean中注入的是乙個cn.itcast.quartz.hellojob實現類的全路徑,底層會反射建立出乙個hellojob的物件,但是該物件不是由spring管理的,所以業務層的物件無法...

SSD踩坑記錄

原github專案位址,借用大神的模型自己訓練ssd 1 error default maxpoolingop only supports nhwc on device type cpu data format nchw 修改為 nhwc 2 關於dataset name 將影象資料轉換為tfrec...