spring webflux(netty)处理程序无法解析包含大于750字节的json的ServerRequest

时间:2018-02-19 14:04:16

标签: spring-boot netty spring-webflux

我们最近开始尝试使用spring boot 2.0。 拥有以下处理程序代码:

@Component
public class DataStreamHandler {

    public Mono<ServerResponse> pipeEvent(ServerRequest request) {
        Mono<String> reqBody = request.bodyToMono(String.class);
        String body = reqBody.block();
        System.out.println(body);
        return ServerResponse.ok().body(fromObject("OK"));
    }
}

@Configuration
public class RouterConfig {

    @Bean
    public RouterFunction<ServerResponse> monoRouterFunction(DataStreamHandler dataStreamHandler) {
        return route(POST("/pipeEvent"), dataStreamHandler::pipeEvent);
    }
}

处理程序似乎无法解析包含大于750字节的json的请求。 当我搜索如何配置max-http-post-size我找到的解决方案只适用于tomcat,jetty和underow。

如何为底层网络配置它?

1 个答案:

答案 0 :(得分:1)

这是反应堆贝蒂的一个已知问题 - look at this issue comment了解更多信息。

您不应该在处理程序中执行阻止操作。

您应该将代码更改为:

@Component
public class DataStreamHandler {

    public Mono<ServerResponse> pipeEvent(ServerRequest request) {
        return request.bodyToMono(String.class)
                .doOnNext(System.out::println)
                .then(ServerResponse.ok().body(fromObject("OK")));
    }
}