- Hands-On Reactive Programming in Spring 5
- Oleh Dokuka Igor Lozynskyi
- 229字
- 2021-07-23 16:36:20
Asynchronous HTTP with Spring Web MVC
The introduced in Servlet 3.0 asynchronous support expands the ability to process an HTTP request in non-container threads. Such a feature is pretty useful for long-running tasks. With those changes, in Spring Web MVC we can return not only a value of type T in @Controller but also a Callable<T> or a DeferredResult<T>. The Callable<T> may be run inside a non-container thread, but still, it would be a blocking call. In contrast, DeferredResult<T> allows an asynchronous response generation on a non-container thread by calling the setResult(T result) method so it could be used within the event-loop.
Starting from version 4.2, Spring Web MVC makes it possible to return ResponseBodyEmitter, which behaves similarly to DeferredResult, but can be used to send multiple objects, where each object is written separately with an instance of a message converter (defined by the HttpMessageConverter interface).
The SseEmitter extends ResponseBodyEmitter and makes it possible to send many outgoing messages for one incoming request in accordance with SSE's protocol requirements. Alongside ResponseBodyEmitter and SseEmitter, Spring Web MVC also respects the StreamingResponseBody interface. When returned from @Controller, it allows us to send raw data (payload bytes) asynchronously. StreamingResponseBody may be very handy for streaming large files without blocking Servlet threads.
- 微商之道
- Building E-commerce Sites with VirtueMart Cookbook
- JBoss EAP6 High Availability
- Web Application Development with R Using Shiny
- 無人機通信
- HTML5 Game development with ImpactJS
- 面向云平臺的物聯網多源異構信息融合方法
- 2018網信發展報告
- 網絡環境中基于用戶視角的信息質量評價研究
- Windows Server 2012 Hyper-V虛擬化管理實踐
- AIoT應用開發與實踐
- 大型企業微服務架構實踐與運營
- bash網絡安全運維
- Qt5 Python GUI Programming Cookbook
- Python Web Scraping Cookbook