首页 > 解决方案 > 意外取消信号和 503 响应代码

问题描述

在使用 Spring Webflux 处理我的反应式 REST 端点时,我意识到,如果返回的Publisher操作没有在大约 30 秒内完成,它将被取消并返回响应代码 503。

我还没有在任何地方看到这种行为。

一个示例 REST 控制器:

package myapp.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import reactor.core.publisher.Mono;

import javax.servlet.http.HttpServletRequest;
import java.time.Duration;

@RestController
public class TestAlationIndexingRestController {

    @RequestMapping(
        value = "/test",
        method = RequestMethod.GET
    )

    public Mono<String> test(HttpServletRequest request) {

        return Mono.delay(Duration.ofMinutes(2)).thenReturn("Late");
    }
}

响应:503 没有响应内容

我的问题:如何禁用此行为,或者至少增加超时?

注意:我尝试使用应用程序属性server.connection-timeout: -1server.connection-timeout: 15没有成功 - 请求在 30 多秒后仍然超时。


我正在使用 Spring Boot 依赖项(版本2.1.6-RELEASE):

       <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-reactor-netty</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-webflux</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-json</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>io.projectreactor</groupId>
            <artifactId>reactor-core</artifactId>
            <version>3.2.12.RELEASE</version>
        </dependency>

标签: spring-bootspring-webflux

解决方案


推荐阅读