61、springmvc-异步请求-返回DeferredResult

61.1 DeferredResult 官方文案

61.2 使用

/**
* 创建订单加入 订单处理队列
*
* @return
*/
@ResponseBody
@RequestMapping("/createOrder")
public DeferredResult<Object> createOrder() {
// 超时间 10秒钟
DeferredResult<Object> deferredResult = new DeferredResult<Object>(10 * 1000L, "create order error");
DeferredResultQueue.save(deferredResult);
return deferredResult;
} /**
* 另外一个线程 从队列中读取 订单任务 开始创建 ,并返回结果
*
* @return
*/
@ResponseBody
@RequestMapping("/create")
public String create() {
String uuid = UUID.randomUUID().toString();
DeferredResult deferredResult = DeferredResultQueue.get();
deferredResult.setResult(uuid);
return "success===>>>> " + uuid;
}
  • 创建一个 DeferredResultQueue 队列
public class DeferredResultQueue {

    private static Queue<DeferredResult<Object>> queue = new ConcurrentLinkedQueue<DeferredResult<Object>>();

    public static void save(DeferredResult<Object> object) {
queue.add(object);
} public static DeferredResult<Object> get() {
return queue.poll();
} }
  • 在10秒 超时之前 调用 /create 和 /createOrder 返回结果一直
  • 如果超时 返回 create order error

最新文章

  1. YII2 日志
  2. 【转】C#调用DLL
  3. Android Studio tips1
  4. iOS 两个App之间调起通信
  5. RHEL7文件管理
  6. 百度地图API:利用瓦片生成工具,自定义背景图片
  7. Git使用记录(二)
  8. BZOJ 3282 Tree Link-Cut-Tree(LCT)
  9. jfreechart 实例
  10. 初探Lambda表达式/Java多核编程【1】从集合到流
  11. 智能打印SDK---官方博客
  12. 1702: [Usaco2007 Mar]Gold Balanced Lineup 平衡的队列
  13. 数字(Number)类型(一)
  14. LODOP打印css样式rgba显示黑色区块
  15. react 入坑笔记(五) - 条件渲染和列表渲染
  16. java操作远程共享目录
  17. 初级字典树查找在 Emoji、关键字检索上的运用 Part-2
  18. logstash过滤配置
  19. Java中的 多线程编程
  20. .netcore Swagger 生成 api接口文档

热门文章

  1. [转帖]Linux内核系统体系概述
  2. Ly与lyon的巅峰对决,描色法
  3. (三)spring Security 从数据库中检索用户名和密码
  4. 随记sqlserver学习笔记(一)
  5. Python-21-socket编程
  6. MySQL8.0新特性实验1
  7. PowerBuilder学习笔记之删除和加载PBL文件的方法
  8. Mybatis之关联关系(一对多、多对多)
  9. RabbitMQ集群部署、高可用和持久化
  10. 论坛中的问题:47(等待类型为MSSEARCH的进程被KILL之后,一直处于回滚状态)