RT ,需求,重试 5 次,不行抛异常,自己的写法是:
while (!某一个条件 ready || retryTimes < 5) {
Thread.sleep(1000);
retryTimes++;
}
if (retryTimes == 5) {
throw new xxxException();
}
不考虑通知机制的前提下,有啥好的写法,目前这个写法太搓了
1
ql562482472 2022-12-30 17:16:15 +08:00
写个框架 比如
class RetryExecutor{ public retry(Consumer task, int retryTimes,Function onsuccess,Function onfailure) } |
2
jdOY 2022-12-30 17:18:35 +08:00 1
spring retry
|
3
oneisall8955 2022-12-30 17:24:53 +08:00
<dependency>
<groupId>com.github.rholder</groupId> <artifactId>guava-retrying</artifactId> <version>2.0.0</version> </dependency> |
4
kaneg 2022-12-30 17:27:22 +08:00
resilience4j-retry
|
5
wolfie 2022-12-30 17:30:17 +08:00
Guava Retry
|
6
z960112559 2022-12-30 18:05:15 +08:00
spring-retry
|
7
vayci 2022-12-30 18:16:20 +08:00
借楼提个问:spring-retry 基于内存实现,程序重启后重试中没结束的逻辑就丢失了。为实现重新程序还能接着重试,我自己手动持久化到 redis ,然后启动时使用 RetryTemplate 又去创建重试。但是感觉这个做法有点蠢,有没有比较优雅的实现方式或者现成的中间件可以实现
|
8
monkeyzsf 2022-12-30 18:45:20 +08:00
RxJava:retryWhen ?
|
9
itning 2022-12-30 18:49:12 +08:00
|
11
vitoliu 2022-12-30 19:52:35 +08:00 via iPhone
Future.callback guava retry 都很优雅。还可以结合 eventbus 做 fallback listener
|