java重试机制的编写(本例子在elasticjob中,可能还有其他方案)

public class SyncData implements SimpleJob {
	public static Logger logger = LoggerFactory
			.getLogger(SyncData .class);
    /**
     * 重试次数(临时)
     */
    @Value("${sync.retry.times}")
	private Integer times;
    /**
     * 重试时间间隔
     */
    @Value("${sync.retry.interval}")
    private Long interval;
    /**
     * 重试次数
     */
    @Value("${sync.retry.times}")
    private Integer totalTime;
	@Override
	public synchronized void execute(ShardingContext arg0) {
		Long startTime=System.currentTimeMillis();
        logger.info("开始写入数据:  开始时间="+startTime)
		try {
			 //业务代码
            this.reset();
		} catch (Exception e) {
			e.printStackTrace();
           if(!this.retry()){
                this.reset();
                //插入操作日志
            }
		}
		
	}


    //重试
    private boolean retry(){
        times--;
        if(times>=0){
            try {
                Thread.sleep(interval);
            } catch (InterruptedException e2) {
                e2.printStackTrace();
            }
            execute(null);
            return true;
        }else{
            this.reset();
            return false;
        }
    }
    //重置次数
    private void reset(){
        this.times=totalTime;
    }

}

可参考主要思路,但不是十分好的重试机制,考虑到业务性能,应该重试某个业务环节最好

若有更好的重试思路,请多多指教,谢谢

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值