异步调用(CompletableFuture)And Spring超时重试(Retryable)和RestTemplate模版调用方法联合使用

「扫码关注我,面试、各种技术(mysql、zookeeper、微服务、redis、jvm)持续更新中~」
在这里插入图片描述

接到一个退费回调的需求,当三方回调通知支付平台支付成功时,需要将退费成功结果异步通知到调用方(APP),如果通知失败,需要进行4次重试,采用Http方式通知调用方接口即可。重点已经标出~

那么接下来就是技术选型了,首先异步怎么处理,立马想到了MQ啊,异步解耦,但是感觉有点杀鸡焉用宰牛刀的感觉,最终还是决定用JDK8升级java.util.concurrent包下Future的完善版CompletableFuture来解决异步的问题。JDK8为什么要升级Future呢?主要是是因为:1.Future虽然可以实现获取异步执行结果的需求,但是它没有提供通知的机制,我们无法得知Future什么时候完成;2.要么使用阻塞,在future.get()的地方等待future返回的结果,这时又变成同步操作。要么使用isDone()轮询地判断Future是否完成,这样会耗费CPU的资源。CompletableFuture弥补了Future模式的缺点。在异步的任务完成后,需要用其结果继续操作时,无需等待。可以直接通过thenAccept、thenApply、thenCompose等方式将前面异步处理的结果交给另外一个异步事件处理线程来处理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值