Tavaszi indítóreaktor Netty konfigurációja

1. Áttekintés

Ebben az oktatóanyagban megvizsgáljuk a Reactor Netty szerver különböző konfigurációs lehetőségeit egy Spring Boot alkalmazásban. Végül lesz egy alkalmazásunk, amely különböző konfigurációs megközelítéseket mutat be.

2. Mi a Reaktor Netty?

Mielőtt elkezdenénk, nézzük meg, mi is a Reactor Netty, és hogyan viszonyul a Spring Boot-hoz.

Netty reaktor egy aszinkron eseményvezérelt hálózati alkalmazás keretrendszer. Nem blokkoló és ellennyomásra kész TCP, HTTP és UDP klienseket és kiszolgálókat biztosít. Ahogy a neve is mutatja, a Netty keretrendszeren alapszik.

Most nézzük meg, hol jön a képbe a Tavasz és a Tavaszi Csizma.

A Spring WebFlux a Spring keretrendszer része, és reaktív programozási támogatást nyújt a webalkalmazásokhoz. Ha a WebFlux-ot egy Spring Boot alkalmazásban használjuk, Tavaszi csizmaautomatikusan konfiguráljaA Netty reaktor alapértelmezett szerverként. Ezen felül kifejezetten hozzáadhatjuk a Netty reaktort a projektünkhöz, és a Spring Boot-nak újra automatikusan konfigurálnia kell.

Most építünk egy alkalmazást, amely megtanulja, hogyan testre szabhatjuk automatikusan konfigurált Reactor Netty szerverünket. Ezt követően kitérünk néhány gyakori konfigurációs forgatókönyvre.

3. Függőségek

Először hozzáadjuk a szükséges Maven-függőséget.

A Reactor Netty szerver használatához hozzáadjuk a spring-boot-starter-webflux függőségként a pom fájlunkban:

 org.springframework.boot spring-boot-starter-webflux 

Ez is behúzza rugós-csomagtartó-indító-reaktor-kádas mint transzitív függőség a projektünkben.

4. Szerver konfigurálása

4.1. A Tulajdonságok fájlok használata

Első lehetőségként tulajdonságfájlokon keresztül konfigurálhatjuk a Netty szervert. A tavaszi rendszerindítás néhány általános kiszolgáló-konfigurációt tár fel a Alkalmazás tulajdonságfájl:

Határozzuk meg a szerver portot alkalmazás.tulajdonságok:

szerver.port = 8088

Vagy ugyanezt tehettük volna ben alkalmazás.yml:

szerver: port: 8088

A kiszolgáló portján kívül a Spring Boot számos más elérhető kiszolgáló konfigurációs lehetőséggel rendelkezik. A tulajdonságokkal kezdődő szerver előtagírjuk felül az alapértelmezett szerverkonfigurációt. Könnyen megkereshetjük ezeket a tulajdonságokat a tavaszi dokumentációban a Beágyazott szerver konfigurációja szakasz.

4.2. A programozási konfiguráció használata

Most nézzük meg, hogyan kód segítségével konfigurálhatjuk a beágyazott Netty szerverünket. Erre a célra a Spring Boot megadja nekünk a WebServerFactoryCustomizer és NettyServerCustomizer osztályok.

Használjuk ezeket az osztályokat a Netty port konfigurálásához, ahogyan azt korábban a tulajdonságfájlunkkal tettük:

@Component public class NettyWebServerFactoryPortCustomizer implementálja a WebServerFactoryCustomizer {@Override public void customize (NettyReactiveWebServerFactory serverFactory) {serverFactory.setPort (8088); }}

A Spring Boot az indításkor felveszi a gyári testreszabási komponensünket, és konfigurálja a kiszolgáló portját.

Alternatív megoldásként megvalósíthatjuk NettyServerCustomizer:

privát statikus osztály PortCustomizer megvalósítja a NettyServerCustomizer {private final int port; privát PortCustomizer (int port) {this.port = port; } @Orride public HttpServer Apply (HttpServer httpServer) {return httpServer.port (port); }}

És adja hozzá a szerver gyárhoz:

serverFactory.addServerCustomizers (új PortCustomizer (8088));

Ez a két megközelítés nagy rugalmasságot biztosít számunkra a beágyazott Reactor Netty szerver konfigurálásakor.

Továbbá elérhetjük a ServerBootstrap osztály a Netty keretrendszerből és ott végezzük el testreszabásainkat:

private static class EventLoopNettyCustomizer implementálja a NettyServerCustomizer {@Override public HttpServer alkalmazást (HttpServer httpServer) {EventLoopGroup parentGroup = new NioEventLoopGroup (); EventLoopGroup childGroup = új NioEventLoopGroup (); adja vissza a httpServer.tcpConfiguration (tcpServer -> tcpServer .bootstrap (serverBootstrap -> serverBootstrap .group (parentGroup, childGroup) .channel (NioServerSocketChannel.class)); }}

Van azonban egy figyelmeztetés erre az esetre. Mivel a tavaszi rendszerindítás automatikusan konfigurálja a Netty szervert, előfordulhat, hogy át kell hagynunk az automatikus konfigurációt azáltal, hogy kifejezetten meghatározzuk NettyReactiveWebServerFactory bab.

Erre a célra meg kell határoznunk a babunkat egy konfigurációs osztályban, és hozzá kell adnunk a testreszabónkat:

@Bean public NettyReactiveWebServerFactory nettyReactiveWebServerFactory () {NettyReactiveWebServerFactory webServerFactory = új NettyReactiveWebServerFactory (); webServerFactory.addServerCustomizers (új EventLoopNettyCustomizer ()); return webServerFactory; }

Ezután folytatjuk néhány általános Netty konfigurációs forgatókönyvet.

5. SSL konfiguráció

Nézzük meg, hogyan konfigurálhatjuk az SSL-t.

Használjuk a SslServerCustomizer osztály, amely a NettyServerCustomizer:

@Component public class NettyWebServerFactorySslCustomizer implementálja a WebServerFactoryCustomizer {@Orride public void customize (NettyReactiveWebServerFactory serverFactory) {Ssl ssl = new Ssl (); ssl.setEnabled (true); ssl.setKeyStore ("osztályút: minta.jks"); ssl.setKeyAlias ​​("alias"); ssl.setKeyPassword ("jelszó"); ssl.setKeyStorePassword ("titok"); Http2 http2 = új Http2 (); http2.setEnabled (hamis); serverFactory.addServerCustomizers (új SslServerCustomizer (ssl, http2, null)); serverFactory.setPort (8443); }}

Itt meghatároztuk a kulcstárral kapcsolatos tulajdonságainkat, letiltottuk a HTTP / 2-t, és a portot 8443-ra állítottuk.

6. Hozzáférési napló konfigurálása

Most megvizsgáljuk, hogyan konfigurálhatjuk a hozzáférési naplózást a Logback használatával.

A Spring Boot segítségével konfigurálhatjuk a hozzáférési naplózást az alkalmazás tulajdonságfájljában a Tomcat, a Jetty és az Undertow számára. Netty azonban még nem rendelkezik ezzel a támogatással.

A Netty hozzáférési naplózás engedélyezéséhez nekünk kellene beállítanunk-Dreactor.netty.http.server.accessLogEnabled = true alkalmazásunk futtatásakor:

mvn spring-boot: futtassa -Dreactor.netty.http.server.accessLogEnabled = true

7. Következtetés

Ebben a cikkben kitértünk a Reactor Netty szerver konfigurálására egy Spring Boot alkalmazásban.

Először az általános Spring Boot tulajdonság-alapú konfigurációs képességeket használtuk. Aztán feltártuk, hogyan lehet programozottan konfigurálni a Netty-t finom szemcsésen.

Végül a cikk forráskódja elérhető a Githubon.


$config[zx-auto] not found$config[zx-overlay] not found