【发布时间】:2020-11-15 22:29:56
【问题描述】:
我使用具有 reactor-netty 版本 0.9.10 的 Spring WebFlux 版本 2.3.0.RELEASE 编写了一个反应式 API。作为 API 的 SLA 的一部分,如果服务器占用的时间超过规定的配置 WriteTimeout,我想使请求超时。
分享下面我为 NettyReactiveWebServerFactory 实现定制器的代码。
@Bean
public WebServerFactoryCustomizer serverFactoryCustomizer() {
return new NettyTimeoutCustomizer();
}
class NettyTimeoutCustomizer implements WebServerFactoryCustomizer<NettyReactiveWebServerFactory> {
@Override
public void customize(NettyReactiveWebServerFactory factory) {
int connectionTimeout = 1000;
int writeTimeout = 1;
factory.addServerCustomizers(server -> server.tcpConfiguration(tcp ->
tcp.option(ChannelOption.CONNECT_TIMEOUT_MILLIS, connectionTimeout)
.doOnConnection(connection ->
connection.addHandlerLast(new WriteTimeoutHandler(writeTimeout)))));
}
}
尽管有定制器,但 WriteTimeout 对 API 不起作用。
【问题讨论】:
标签: spring-webflux reactor-netty