使用CompletableFuture进行异步调用,处理失败和成功的逻辑
private BaseResponse asyncPush(MessageTemplateSendRequest request) {
CompletableFuture.supplyAsync(() -> pushGateway.messageTemplateSend(request), taskAsyncPool)
.thenAccept(result -> {
//do success
log.debug("async push success!!! request: {}, result:{}", request, result);
})
.exceptionally(e -> {
//do failed
log.error("async push error!!! request: {}, error message:{}", request, e.getMessage());
return null;
});
return ResponseUtils.success();
}
CompleableFuture异步线程调用 :
- supplyAsync方法 : 传入执行的 请求任务 , 指定线程池
- supplyAsync方法后面使用lamda语法点上 . thenAccept (执行结果…成功OK ) , 执行失败时使用exceptionalapply方法返回结果或者进行补偿
AsyncRestTemplate 异步调用是废弃的, 调用失败会出现报错