【转】non-blocking REST services with Spring MVC
2018-02-24 12:42
603 查看
堵塞Controller
Controller为单例;非线程安全;
堵塞方式;
1个request对应1个处理Thread;
@RestController public class ProcessingController { @RequestMapping("/process-blocking") public ProcessingStatus blockingProcessing(...) { ... return new ProcessingStatus(...); } }
非阻塞
@RestController public class ProcessingController { @RequestMapping("/process-non-blocking") public DeferredResult<ProcessingStatus> nonBlockingProcessing(...) { // Initiate the processing in another thread DeferredResult<ProcessingStatus> deferredResult = new DeferredResult<>(); ProcessingTask task = new ProcessingTask(deferredResult, ...); dispatch(task); // Return to let go of the precious thread we are holding on to... return deferredResult; } } public class ProcessingTask extends SomeCallbackInterface { private DeferredResult<ProcessingStatus> deferredResult; public ProcessingTask(DeferredResult<ProcessingStatus> deferredResult, ...) { this.deferredResult = deferredResult; ... } @Override public void done() { if (deferredResult.isSetOrExpired()) { LOG.warn("Processing of non-blocking request already expired"); } else { boolean deferredStatus = deferredResult.setResult(new ProcessingStatus(...)); } } }
原文链接
Developing non-blocking REST services with Spring MVC相关文章推荐
- SpringMVC conflicts with existing, non-compatible bean definition of same name and class 的解决办法,sprin
- springmvc+velocity+ Rest Services(xml,json)实例
- SpringMVC中类名重名(SpringMVC conflicts with existing, non-compatible bean definition of same name )
- SpringMVC conflicts with existing, non-compatible bean definition of same name and class 的解决办法
- springmvc+velocity+ Rest Services(xml,json)实例
- Embedded Jetty and Apache CXF: secure REST services with Spring Security
- SpringMVC conflicts with existing, non-compatible bean definition of same name and class 的解决办法
- SpringMVC conflicts with existing, non-compatible bean definition of same name and class 的解决办法
- SpringMVC conflicts with existing, non-compatible bean definition of same name and class 的解决办法 问题起因
- Spring Boot——2分钟构建spring web mvc REST风格HelloWorld
- Spring MVC HiddenHttpMethodFilter 实现 REST风格的URL
- IntelliJ IDEA:Getting Started with Spring MVC, Hibernate and JSON实践
- spring+springmvc+myibatic中出现了Error creating bean with name 'userService':
- springMVC No mapping found for HTTP request with URI
- Setting Up Swagger 2 with a Spring Boot REST API
- IntelliJ IDEA:Getting Started with Spring MVC, Hibernate and JSON实践
- Spring Boot——2分钟构建spring web mvc REST风格HelloWorld
- Spring RestTemplate: 比httpClient更优雅的Restful URL访问, java HttpPost with header,Spring RestTemplate在spr
- RESTful Web Services with RESTeasy JAX-RS on Tomcat 7
- spring-mvc restful web services