内容简介:在本教程中,我们将在Spring Boot应用程序中查看Reactor Netty服务器的不同配置选项。最后,我们将展示一个展示不同配置方法的应用程序。在开始之前,让我们看一下Reactor Netty是什么以及它与Spring Boot的关系。
在本教程中,我们将在Spring Boot应用程序中查看Reactor Netty服务器的不同配置选项。最后,我们将展示一个展示不同配置方法的应用程序。
什么是Reactor Netty?
在开始之前,让我们看一下Reactor Netty是什么以及它与Spring Boot的关系。
Reactor Netty是一个异步事件驱动的网络应用程序框架。它提供非阻塞和背压就绪的TCP,HTTP和UDP客户端和服务器。顾名思义,它基于Netty框架。
现在,让我们看看Spring和Spring Boot的位置。
Spring WebFlux 是Spring框架的一部分,为Web应用程序提供反应式编程支持。如果我们在Spring Boot应用程序中使用WebFlux,Spring Boot会 自动将 Reactor Netty 配置为默认服务器。除此之外,我们可以明确地将Reactor Netty添加到我们的项目中,Spring Boot应该再次自动配置它。
现在,我们将构建一个应用程序来了解如何自定义我们自动配置的Reactor Netty服务器。之后,我们将介绍一些常见的配置方案。
首先,我们将添加所需的Maven依赖项。
要使用Reactor Netty服务器,我们将在我们的pom文件中添加 spring-boot-starter-webflux 作为依赖项:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-webflux</artifactId> <version>2.1.3.RELEASE</version> </dependency>
我们可以通过属性文件配置Netty服务器。Spring Boot公开了应用程序属性文件中的一些常见服务器配置:让我们在application.properties中定义服务器端口:
server.port=8088
除了服务器端口,Spring Boot还有许多其他可用的 服务器配置选项 。 以服务器 前缀开头的属性 允许我们覆盖默认服务器配置。我们可以在EMBEDDED SERVER CONFIGURATION部分的 Spring文档中 轻松查找这些属性。
现在,让我们看一下如何通过代码配置嵌入式Netty服务器。为此,Spring Boot为我们提供了WebServerFactoryCustomizer和NettyServerCustomizer类。
让我们使用这些类来配置Netty端口,就像我们之前使用属性文件一样:
@Component <b>public</b> <b>class</b> NettyWebServerFactoryPortCustomizer implements WebServerFactoryCustomizer<NettyReactiveWebServerFactory> { @Override <b>public</b> <b>void</b> customize(NettyReactiveWebServerFactory serverFactory) { serverFactory.setPort(8088); } }
Spring Boot将在启动期间选择我们的工厂自定义程序组件,并将配置服务器端口。
或者,我们可以实现NettyServerCustomizer:
<b>private</b> <b>static</b> <b>class</b> PortCustomizer implements NettyServerCustomizer { <b>private</b> <b>final</b> <b>int</b> port; <b>private</b> PortCustomizer(<b>int</b> port) { <b>this</b>.port = port; } @Override <b>public</b> HttpServer apply(HttpServer httpServer) { <b>return</b> httpServer.port(port); } }
并将其添加到服务器工厂:
serverFactory.addServerCustomizers(<b>new</b> ProtocolCustomizer(8088));
在配置嵌入式Reactor Netty服务器时,这两种方法为我们提供了很大的灵活性。
此外,我们还可以从Netty框架访问ServerBootstrap类并在那里进行自定义:
<b>private</b> <b>static</b> <b>class</b> EventLoopNettyCustomizer implements NettyServerCustomizer { @Override <b>public</b> HttpServer apply(HttpServer httpServer) { EventLoopGroup parentGroup = <b>new</b> NioEventLoopGroup(); EventLoopGroup childGroup = <b>new</b> NioEventLoopGroup(); <b>return</b> httpServer.tcpConfiguration(tcpServer -> tcpServer .bootstrap(serverBootstrap -> serverBootstrap .group(parentGroup, childGroup) .channel(NioServerSocketChannel.<b>class</b>))); } }
但是,对于这种情况有一个警告。由于Spring Boot自动配置Netty服务器,我们可能需要通过显式定义NettyReactiveWebServerFactory bean 来跳过自动配置。
为此,我们应该在配置类中定义我们的bean并在那里添加我们的定制器:
@Bean <b>public</b> NettyReactiveWebServerFactory nettyReactiveWebServerFactory() { NettyReactiveWebServerFactory webServerFactory = <b>new</b> NettyReactiveWebServerFactory(); webServerFactory.addServerCustomizers(<b>new</b> EventLoopNettyCustomizer()); <b>return</b> webServerFactory; }
接下来,我们将继续介绍一些常见的Netty配置方案。
SSL配置
我们来看看如何配置SSL。
我们将使用SslServerCustomizer 类,它是NettyServerCustomizer的另一个实现:
@Component <b>public</b> <b>class</b> NettyWebServerFactorySslCustomizer implements WebServerFactoryCustomizer<NettyReactiveWebServerFactory> { @Override <b>public</b> <b>void</b> customize(NettyReactiveWebServerFactory serverFactory) { Ssl ssl = <b>new</b> Ssl(); ssl.setEnabled(<b>true</b>); ssl.setKeyStore(<font>"classpath:sample.jks"</font><font>); ssl.setKeyAlias(</font><font>"alias"</font><font>); ssl.setKeyPassword(</font><font>"password"</font><font>); ssl.setKeyStorePassword(</font><font>"secret"</font><font>); Http2 http2 = <b>new</b> Http2(); http2.setEnabled(false); serverFactory.addServerCustomizers(<b>new</b> SslServerCustomizer(ssl, http2, <b>null</b>)); serverFactory.setPort(8443); } } </font>
这里我们定义了与密钥库相关的属性,禁用了HTTP / 2,并将端口设置为8443。
访问日志配置
现在,我们将了解如何 使用Logback 配置访问日志记录。
Spring Boot允许我们在Tomcat,Jetty和Undertow的应用程序属性文件中配置访问日志记录。但是,Netty目前还没有这种支持。
要启用Netty访问日志记录,我们应该 在运行应用程序时设置-Dreactor.netty.http.server.accessLogEnabled = true:
mvn spring-boot:run -Dreactor.netty.http.server.accessLogEnabled=<b>true</b>
结论
在本文中,我们已经介绍了如何在Spring Boot应用程序中配置Reactor Netty服务器。
首先,我们使用了一般的Spring Boot属性配置功能。然后,我们探讨了如何以细粒度的方式以编程方式配置Netty。
最后,本文的源代码可以 在Github上找到 。
以上所述就是小编给大家介绍的《Spring Boot Reactor Netty配置 | Baeldung》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 6、如何获取配置中心的配置
- React降级配置及Ant Design配置
- vscode 配置eslint 开发vue的相关配置
- git commit 规范校验配置和版本发布配置
- hadoop地址配置、内存配置、守护进程设置、环境设置
- 在hibernate中配置事务级别与命名查询配置【原创】
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
C++Templates中文版
David Vandevoorde、Nicolai M.Josuttis / 陈伟柱 / 人民邮电出版社 / 2008-2 / 69.00元
本书是C++模板编程的完全指南,旨在通过基本概念、常用技巧和应用实例3方面的有用资料,为读者打下C++模板知识的坚实基础。 全书共22章。第1章全面介绍了本书的内容结构和相关情况。第1部分(第2~7章)以教程的风格介绍了模板的基本概念,第2部分(第8~13章)阐述了模板的语言细节,第3部分(第14~18章)介绍了C++模板所支持的基本设计技术,第4部分(第19~22章)深入探讨了各种使用模板......一起来看看 《C++Templates中文版》 这本书的介绍吧!
JS 压缩/解压工具
在线压缩/解压 JS 代码
XML 在线格式化
在线 XML 格式化压缩工具