Adjust timeout in Spring MVC for reactive streaming

Issue: SPR-15669
This commit is contained in:
Rossen Stoyanchev 2017-06-15 13:11:59 -04:00
parent 53e8ebe6a6
commit ef3e309c12
1 changed files with 5 additions and 2 deletions

View File

@ -70,6 +70,9 @@ import org.springframework.web.servlet.HandlerMapping;
*/ */
class ReactiveTypeHandler { class ReactiveTypeHandler {
private static final long STREAMING_TIMEOUT_VALUE = -1;
private static Log logger = LogFactory.getLog(ReactiveTypeHandler.class); private static Log logger = LogFactory.getLog(ReactiveTypeHandler.class);
private final ReactiveAdapterRegistry reactiveRegistry; private final ReactiveAdapterRegistry reactiveRegistry;
@ -126,7 +129,7 @@ class ReactiveTypeHandler {
if (adapter.isMultiValue()) { if (adapter.isMultiValue()) {
if (mediaTypes.stream().anyMatch(MediaType.TEXT_EVENT_STREAM::includes) || if (mediaTypes.stream().anyMatch(MediaType.TEXT_EVENT_STREAM::includes) ||
ServerSentEvent.class.isAssignableFrom(elementClass)) { ServerSentEvent.class.isAssignableFrom(elementClass)) {
SseEmitter emitter = new SseEmitter(); SseEmitter emitter = new SseEmitter(STREAMING_TIMEOUT_VALUE);
new SseEmitterSubscriber(emitter, this.taskExecutor).connect(adapter, returnValue); new SseEmitterSubscriber(emitter, this.taskExecutor).connect(adapter, returnValue);
return emitter; return emitter;
} }
@ -162,7 +165,7 @@ class ReactiveTypeHandler {
} }
private ResponseBodyEmitter getEmitter(MediaType mediaType) { private ResponseBodyEmitter getEmitter(MediaType mediaType) {
return new ResponseBodyEmitter() { return new ResponseBodyEmitter(STREAMING_TIMEOUT_VALUE) {
@Override @Override
protected void extendResponse(ServerHttpResponse outputMessage) { protected void extendResponse(ServerHttpResponse outputMessage) {
outputMessage.getHeaders().setContentType(mediaType); outputMessage.getHeaders().setContentType(mediaType);