我已经使用SpringWebFlux版本2.3.0编写了一个反应式API。发布Reactornetty版本0.9.10。作为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。
不要定义WebServerFactoryCustomizer bean,而是创建NettyReactiveWebServerFactory的bean来覆盖Spring的自动配置。
@Bean
public NettyReactiveWebServerFactory nettyReactiveWebServerFactory() {
NettyReactiveWebServerFactory webServerFactory = new NettyReactiveWebServerFactory();
webServerFactory.addServerCustomizers(new MyCustomizer());
return webServerFactory;
}
现在,MyCustomizer的外观如下所示:
public class MyCustomizer implements NettyServerCustomizer {
@Override
public HttpServer apply(HttpServer httpServer) {
return httpServer.tcpConfiguration(tcpServer -> tcpServer.option(ChannelOption.CONNECT_TIMEOUT_MILLIS, 1000)
.bootstrap(serverBootstrap -> serverBootstrap.childHandler(new ChannelInitializer<Channel>() {
@Override
protected void initChannel(Channel channel) throws Exception {
channel.pipeline().addLast("writeTimeoutHandler", new WriteTimeoutHandler(1));
}
}))
);
}
}
这是API官方文件中建议的方式
问题内容: 我在Sublime Text2中设置构建环境时遇到问题。我将Macports用于Python和软件包安装。 我的python.sublime-build文件如下所示: 我认为(通过搜索)我需要修改“ cmd”行以指向Macports版本。有人成功做到了吗? 在Terminal中,一切构建/运行都很好,只有Sublime Text2的构建仍在获取系统版本。 附加信息: 谢谢你的帮助。 问
输入示例:12345.1 期望输出总计金额DueTextField: 12,345.10 实际结果 系统出来println(格式化文本):12345.10//OK totalAmountDueTextField。setText(formattedText):12345.1//这就是问题所在。 以及如何将初始值设置为0.00(当前为0.0)?
您好,我遵循了在windows上设置React本机项目的官方文档。我在location中添加了ANDROID_HOME变量作为系统变量 在第二步中,我应该在 “C:\Android\tools\bin\platform tools” 但是Android中没有tools文件夹,我发现SDK下的平台工具就在下面 "C:\用户\AKSHAY\AppData\本地\Android\SDK\平台工具" 现在
我想在Hostgator共享主机上部署我的Laravel 3项目。Laravel 3所需的最小php是php56。Hostgator中默认的php是php54,低于所需的版本。 我按照这个指令在HG中找到了php56,然后我找到了它。然后我编辑了~/.bashrc。 现在,当我检查php版本时,它清楚地表明它是 PHP 5.6.30(cli)(内置: Mar27 2017 11:42:52)Cop
问题内容: 如何在HttpClient上更改受支持的TLS版本? 我正在做: 但是当我检查创建的套接字时,它仍然说支持的协议是TLSv1.0,TLSv1.1和TLSv1.2。 实际上,我只希望它针对此特定HttpClient停止使用TLSv1.2。 问题答案: 解决方案是: 不过,这需要org.apache.httpcomponents.httpclient4.3.x。
问题内容: 我试图将默认的python版本设置为in 。默认情况下为(2.7)。我遵循以下步骤: 但第二条语句出现以下错误, 我是Ubuntu的新手,我不知道自己在做什么错。 问题答案: 编辑: 我幼稚的时候写的是更好的方法。请参阅@Pardhu的答案。 打开.bashrc文件。 在文件顶部的新行上键入,然后使用ctrl + o保存文件并使用ctrl + x关闭文件。然后,返回您的命令行类型 。现