List of usage examples for org.springframework.web.context.request.async DeferredResult DeferredResult
public DeferredResult(@Nullable Long timeoutValue, Supplier<?> timeoutResult)
From source file:com.sishuok.chapter3.web.controller.chat.MsgPublisher.java
public DeferredResult<String> startAsync(final String username) { final DeferredResult<String> result = new DeferredResult<String>(30L * 1000, null); final Runnable removeDeferredResultRunnable = new Runnable() { @Override// w ww . j av a2 s . co m public void run() { Queue<DeferredResult<String>> queue = usernameToDeferredResultMap.get(username); if (queue != null) { queue.remove(result); } } }; result.onCompletion(removeDeferredResultRunnable); result.onTimeout(removeDeferredResultRunnable); //???? Queue<DeferredResult<String>> queue = usernameToDeferredResultMap.get(username); if (queue == null) { queue = new ConcurrentLinkedDeque(); usernameToDeferredResultMap.put(username, queue); } queue.add(result); return result; }
From source file:siddur.solidtrust.image.ImageController.java
@RequestMapping(value = "/api/images") public @ResponseBody DeferredResult<Object> findCarImages(final @RequestParam("id") String id, HttpServletRequest request) {// w w w . ja v a 2s. c om final String ip = request.getRemoteHost(); final String username = request.getAttribute(SolidtrustConstants.CLIENT_ID) + ""; final int port = request.getLocalPort(); final String address = request.getLocalAddr(); final DeferredResult<Object> result = new DeferredResult<>(2000L, "no data"); log4j.info("Id=" + id + " ,Remaining: " + suspendedImageRequests.remainingCapacity()); try { suspendedImageRequests.add(result); } catch (Exception e1) { result.setResult("Image service is overload"); return result; } result.onCompletion(new Runnable() { @Override public void run() { suspendedImageRequests.remove(result); } }); new Thread(new Runnable() { @Override public void run() { AccessItem ai = new AccessItem(); ai.setIp(ip); ai.setUsername(username); ai.setService(Product.IMAGES.getId()); ai.setRequest(id); ImageProduct ip = null; try { ip = findImagesByLicensePlate(id); } catch (Exception e) { ai.setStatus(-1); log4j.error(e.getMessage(), e); ai.setResponse(e.getMessage()); free.save(ai); return; } if (ip == null) { ai.setStatus(-1); ai.setResponse("Not found:" + id); free.save(ai); return; } ai.setResponse(ip.getId() + ""); free.save(ai); ImageProduct resp = addPrefix(port, address, ip); result.setResult(resp); } }).start(); return result; }