使用Spring AsyncRestTemplate对象进行异步请求调用
直接上代码:
package com.mlxs.common.server.asyncrest; import org.apache.log4j.Logger; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Controller; import org.springframework.util.concurrent.ListenableFuture; import org.springframework.util.concurrent.ListenableFutureCallback; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.client.AsyncRestTemplate; import org.springframework.web.client.RestTemplate; /** * Asyncrest: AsyncRestTemplate 异步发生请求测试 * * @author mlxs * @since 2016/8/4 */ @Controller @RequestMapping("/async") public class AsyncrestController { Logger logger = Logger.getLogger(AsyncrestController.class); @RequestMapping("/fivetime") @ResponseBody public String tenTime(){ try { Thread.sleep(5000); } catch (InterruptedException e) { e.printStackTrace(); } return "5秒..."; } /** * 同步调用 * @return */ @RequestMapping("/sync") @ResponseBody public String sync(){ //同步调用 RestTemplate template = new RestTemplate(); String url = "http://localhost:8080/async/fivetime";//休眠5秒的服务 String forObject = template.getForObject(url, String.class); return "同步调用结束, 结果:" + forObject; } /** * 异步调用 * @return */ @RequestMapping("/async") @ResponseBody public String async(){ AsyncRestTemplate template = new AsyncRestTemplate(); String url = "http://localhost:8080/async/fivetime";//休眠5秒的服务 //调用完后立即返回(没有阻塞) ListenableFuture<ResponseEntity<String>> forEntity = template.getForEntity(url, String.class); //异步调用后的回调函数 forEntity.addCallback(new ListenableFutureCallback<ResponseEntity<String>>() { //调用失败 @Override public void onFailure(Throwable ex) { logger.error("=====rest response faliure======"); } //调用成功 @Override public void onSuccess(ResponseEntity<String> result) { logger.info("--->async rest response success----, result = "+result.getBody()); } }); return "异步调用结束"; } }
同步请求:
异步请求:
逃避不一定躲得过,面对不一定最难过
本文作者:Yzl1990
本文链接:https://www.cnblogs.com/yangzhenlong/p/5737991.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
分类:
标签:
,
,
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步