博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
guava Retryer 定时重试机制
阅读量:6798 次
发布时间:2019-06-26

本文共 3459 字,大约阅读时间需要 11 分钟。

hot3.png

1.第一种情况 :

抛出指定的异常IOException 则继续执行,若不是则抛出异常终止程序

package com.qimh.demo2;import com.github.rholder.retry.Retryer;import com.github.rholder.retry.RetryerBuilder;import com.github.rholder.retry.StopStrategies;import com.github.rholder.retry.WaitStrategies;import java.io.FileNotFoundException;import java.io.IOException;import java.text.SimpleDateFormat;import java.util.Date;import java.util.concurrent.Callable;import java.util.concurrent.TimeUnit;public class RetryDemo {    private static SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss,SSS");    public static void main(String[] args) throws Exception {        Retryer
retryer = RetryerBuilder.
newBuilder() //抛出指定的异常IOException 则继续执行,若不是则抛出异常终止程序 .retryIfExceptionOfType(IOException.class) .withWaitStrategy(WaitStrategies.fixedWait(1, TimeUnit.SECONDS)) .withStopStrategy(StopStrategies.stopAfterAttempt(5)) .build(); System.out.println("begin..." + df.format(new Date())); try { retryer.call(buildTask()); } catch (Exception e) { e.printStackTrace(); } System.out.println("end..." + df.format(new Date())); } private static Callable
buildTask() { return new Callable
() { private int i = 0; @Override public Boolean call() throws Exception { System.out.println("called"); i++; if (i == 1) { throw new IOException(); } else { throw new NullPointerException(); } } }; }}

2.第二种情况:

RetryException就很简单了,当所有重试结束后,依然不能成功,那么就会抛这异常。

package com.qimh.demo2;import com.github.rholder.retry.Retryer;import com.github.rholder.retry.RetryerBuilder;import com.github.rholder.retry.StopStrategies;import com.github.rholder.retry.WaitStrategies;import java.io.IOException;import java.text.SimpleDateFormat;import java.util.Date;import java.util.concurrent.Callable;import java.util.concurrent.TimeUnit;public class RetryDemo2 {    private static SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss,SSS");    public static void main(String[] args) throws Exception {        Retryer
retryer = RetryerBuilder.
newBuilder() //RetryException就很简单了,当所有重试结束后,依然不能成功,那么就会抛这异常。 .retryIfException() .withWaitStrategy(WaitStrategies.fixedWait(1, TimeUnit.SECONDS)) .withStopStrategy(StopStrategies.stopAfterAttempt(5)) .build(); System.out.println("begin..." + df.format(new Date())); try { retryer.call(buildTask()); } catch (Exception e) { e.printStackTrace(); } System.out.println("end..." + df.format(new Date())); } private static Callable
buildTask() { return new Callable
() { private int i = 0; @Override public Boolean call() throws Exception { System.out.println("called"); i++; if (i == 1) { throw new IOException(); } else { throw new NullPointerException(); } } }; }}

参考连接:

转载于:https://my.oschina.net/qimhkaiyuan/blog/3047416

你可能感兴趣的文章
DataTable 的数据导出到 Excel
查看>>
委托由浅入深学习
查看>>
BZOJ 1012 [JSOI2008]最大数maxnumber
查看>>
权限管理[Linux]
查看>>
unity3d优化总结篇(二)
查看>>
自定义view,实现文本自动换行
查看>>
查看网页自动保存的密码
查看>>
BZOJ2705:[SDOI2012]Longge的问题——题解
查看>>
AFNetworking
查看>>
python基础--内置函数map
查看>>
Protobuf3 序列化
查看>>
Chisel3 - model - UserModule commands
查看>>
下载新浪的行情数据
查看>>
六,移植uboot-设置默认环境变量,完善u-boot
查看>>
【题解】【区间】【二分查找】【Leetcode】Insert Interval & Merge Intervals
查看>>
新博客
查看>>
jquery $.proxy使用
查看>>
Hello,C++(7)函数模板和类模板
查看>>
网站使用https协议
查看>>
git 使用
查看>>