支付系统异步通知承接上文:
本篇介绍通过spring-retry来实现支付系统异步通知功能。
1、添加所需的jar
org.springframework.retry spring-retry 1.1.2.release
2、实现任务重试服务
package com.huatech.service; import java.io.ioexception; import java.net.urisyntaxexception; import java.util.hashmap; import org.slf4j.logger; import org.slf4j.loggerfactory; import org.springframework.retry.retryexception; import org.springframework.retry.annotation.backoff; import org.springframework.retry.annotation.enableretry; import org.springframework.retry.annotation.retryable; import org.springframework.stereotype.service; import com.huatech.common.delay.retmessage; import com.huatech.common.util.httpsutil; /** * 任务重试服务 * * 第一次成功则不再重试; * 第一次失败,10分钟后重试第二次; * 第二次失败,20分钟后重试第三次; * 第三次失败,40分钟后重试第四次; * 第四次失败,60分钟后重试第五次; * @author lh * */ //@configuration @enableretry @service public class taskretryservice { private static final logger logger = loggerfactory.getlogger(taskretryservice.class); //返回结果 private static final string res_success = "success"; //时间单位:10min private static final long time_unit = 1000 * 60 * 10; //重试次数 private static final int max_attempts = 5; @retryable(value = {retryexception.class, runtimeexception.class}, maxattempts = max_attempts, backoff = @backoff(delay = time_unit, maxdelay=time_unit * 6, multiplier= 2 )) public void notice(retmessage msg){ hashmapparammap = new hashmap (); parammap.put("reqdata", msg.getreqdata()); string httpresult = null; try { httpresult = httpsutil.getinstance().dopostretstring(msg.get, null, parammap); logger.info("第{}次异步回调,返回结果{},返回参数:{},响应结果:{}", msg.gettimes(), httpresult, parammap.get("reqdata"), res_success.equals(httpresult)); if (!res_success.equals(httpresult)) { msg.settimes(msg.gettimes() 1); msg.setsuccess(false); throw new retryexception("retry failed"); }else{ msg.setsuccess(true); } } catch (urisyntaxexception | ioexception e) { } } }
相关推荐
压缩包包含着springboot项目retry,项目中演示了使用spring-retry传统的方式以及注解的方式使用重试的案例,也有guava-retry的使用案例,以及两者的区别
spring-amqp,spring-retry,spring-rabbit
spring-retry jar
spring重试 使用spring-retry项目的例子
此项目为spring提供声明性重试支持。
spring-retry 1.1.4重试功能.rar
适用于支付回调,多系统之间(需要自定义重试的场景)
spring-retry-1.0.0.release.jar
主要介绍了spring-retry简单使用方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
目前有两个开源的类库spring retry and guava retry都支持编程式,spring retry更加融合spring的aop注解驱动,使用更加的方便。模拟异常场景为了实现demo,模拟了异常的场景异常调用...
15\spring-retry-1.1.2.release.jar 16\spring-test-4.3.0.release.jar 17\spring-tx-4.3.0.release.jar 18\spring-web-4.3.0.release.jar 19\spring-webmvc-4.3.0.release.jar 20\spring-websocket-4.3.0.release....
前端开源库-superagent-retry超级代理重试,超级代理请求的重试层
弹簧重试spring 重试模板示例
spring提供的声明式的重试类库。示例代码:@configuration @enableretry public class application { @bean public service service() { return new service(); } } @service class service { ...
前端开源库-axios-retryaxios retry是一个axios插件,它拦截失败的请求,并在可能的时候重试。
主要介绍了spring boot使用spring retry重试机制的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
和guava retry、spring retry相比,smart retry最大的特点是异步重试,支持持久化,系统重启之后可以继续重试。背景在微服务环境下,会根据不同的业务将拆分成不同的服务,比如会员服务、订单服务、商品服务等等,每...
bluebird-retry, retrying bluebird promise的实用工具 蓝鸟重试 这个非常简单的库提供了一个函数来重新尝试异步操作,直到它成功。 一个"异步操作"由一个返回承诺或者同步返回的函数来体现。它支持定期间隔和指数...
spring-rabbit-1.5.1.release.jar, spring-amqp-1.5.1.release.jar, rabbitmq-client.jar spring-retry-1.1.2.release.jar 四个包 之前的资源不好意思传错了一个
node-retry, 失败操作的指数和自定义重试策略的抽象 重试失败操作的指数和...安装npm install retry当前状态这个 module 已经测试过了,可以使用了。教程下面的示例将使用指数退避策略重试一个可能失败的dns.resolve