domenica 28 ottobre 2018

Comunicazione tra MicroServices in Spring Boot con RabbitMQ


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:

  1.  creiamo diversi file di configurazione di spring per ogni file cambiamo semplicemente la porta.
  2. 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


il vostro desktop diventa qualcosa di delirante...

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: