Gyakorlat – HTTP-munkamenet adatainak tárolása a Redisben
Ebben a leckében adja hozzá a Spring Session-t a meglévő Spring Boot-alkalmazáshoz, hogy HTTP-munkamenetadatokat tároljon az Azure Cache for Redisben.
A spring session konfigurálása
Ha spring session-támogatást szeretne hozzáadni az alkalmazáshoz, adja hozzá a következő függőséget a
<dependencies>
pom.xml fájl szakaszához:<dependency> <groupId>org.springframework.session</groupId> <artifactId>spring-session-data-redis</artifactId> </dependency>
Ha úgy szeretné konfigurálni a Spring Session-t, hogy a Redist használja a munkamenet-replikációhoz, adja hozzá a következő sort az src/main/resources/application.properties fájlhoz :
spring.session.store-type=redis
Új vezérlő hozzáadása a munkamenet-replikáció teszteléséhez
Adjon hozzá egy új Spring MVC REST-vezérlőt az alkalmazáshoz a munkamenet-replikáció teszteléséhez.
Hozzon létre egy új, SessionReplicationController nevű vezérlőt a TodoController mellett.
package com.example.demo; import org.springframework.context.annotation.Bean; import org.springframework.session.data.redis.config.ConfigureRedisAction; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.servlet.http.HttpSession; @RestController @RequestMapping("/") public class SessionReplicationController { @Bean public static ConfigureRedisAction configureRedisAction() { return ConfigureRedisAction.NO_OP; } @GetMapping("/session") public String session(HttpSession session) { Integer test = (Integer) session.getAttribute("test"); if (test == null) { test = 0; } else { test++; } session.setAttribute("test", test); return "[" + session.getId() + "]-" + test; } }
Megjegyzés:
Konfiguráljon egy adott
ConfigureRedisAction.NO_OP
Spring bean-t, mert a Spring Session alapértelmezés szerint megpróbálja beállítani a Redis-kulcstérértesítéseket, amelyek nem működnek a biztonságos Azure Cache for Redis-példányokon. Ha kulcstér-értesítésekre van szüksége az Azure Cache for Redishez, manuálisan kell alkalmaznia őket a Redis parancssori felületén keresztül.A kulcstérértesítések hasznosak a WebSocketekhez, de több erőforrást használnak fel. A jelenlegi forgatókönyv nem használ WebSocketeket, és nem szabad engedélyeznie a keyspace-értesítéseket.
Indítsa újra az alkalmazást a HTTP-munkamenet-replikáció előnyeinek kihasználásához.
Munkamenet-replikáció tesztelése
A HTTP-munkamenetek felhasználóspecifikusak, és cookie-kon keresztül vannak fenntartva. Az alábbi módszerek egyikével tesztelheti, hogy a munkamenetek megfelelően működnek-e:
Mutasson a böngészőre,
http://localhost:8080/session
és töltse be újra többször a lapot.Futtassa többször a következő parancssort:
curl -b cookie.txt -c cookie.txt http://127.0.0.1:8080/session
Az előző parancs egy cookie.txt nevű fájlba menti a cookie-t.
Bármelyik metódus kimenetet hoz létre, amely az egyes kérések után növekményes számmal jeleníti meg a HTTP-munkamenet azonosítóját, ahogyan az alábbi példában látható:
A munkamenetek megfelelő megőrzésének ellenőrzéséhez indítsa újra a kiszolgálót, és ellenőrizze, hogy a munkamenet adatai nem vesztek-e el.
A következő leckében üzembe helyezi az alkalmazást a felhőben, és fürtözheti a HTTP-munkameneteket a helyi gép és a felhőszolgáltatás között.