Dopo attenta lettura di documentazione on-line e suggerimenti da amici provo ad eseguire qualche test di comunicazione tra Micro Services utilizzando un gestore di code di messaggi RabbitMQ.
Con una semplice app in Spring Boot, con interfaccia rest, al richiamo di una path, viene spedito un messaggio al RabbitMQ installato sullo stesso PC in locale.
Per RabbitMQ vi consiglio vivamente di installare il plugin per il management da web
http://localhost:15672/ guest/guest.
La parte di controller è molto semplice, è un api rest che quando viene richiamata spedisce un messaggio al RabbitMQ e nella stessa classe un metodo che rimane in ascolto sulla stessa coda.
Adesso eseguiamo alcuni stress test:
- creiamo diversi file di configurazione di spring per ogni file cambiamo semplicemente la porta.
- eseguiamo la build del progetto e lanciamo n jar per ogni profiles creato nel file di configurazione yaml.
java -jar rabbit-spring-test-0.0.1.jar --spring.profiles.active=9001
java -jar rabbit-spring-test-0.0.1.jar --spring.profiles.active=9002
java -jar rabbit-spring-test-0.0.1.jar --spring.profiles.active=9003
java -jar rabbit-spring-test-0.0.1.jar --spring.profiles.active=9004
3. Configuro il jMeter per iniziare ad eseguire chiamate sui quattro server
http://localhost:900{1-4}/sendMessage
C:\dev\apache-jmeter-5.0\bin> .\jmeter -n -t .\sendmessage.jmx -l tmp\jmeter-o.log -o tmp\dashboard
il file sendmessage.jmx
Client web di RabbitMQ
Riassumendo con jMeter abbiamo spedito 48000 richiese di invio di messaggi alle 4 app Spring Boot.
Le app hanno inviato una richiesta in coda al RabbitMQ che a sua volta per ognuno dei suddetti ha reinviato il messaggio alle 4 app.
In ingresso ha processato 48000 messaggi.
In uscita ha processato 192000 messaggi.
Tutto questo in 1 minuto.
Nessun commento:
Posta un commento