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

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

61.1 DeferredResult 官方文案

1221855-20181219155558576-1203385759.png

1221855-20181219160748040-207840087.png

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

转载于:https://www.cnblogs.com/Grand-Jon/p/10089391.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值