Il nostro team è in uno sprint di picco per scegliere tra ActiveMQ o RabbitMQ. Abbiamo creato 2 picchi di produttori/consumatori che inviano un messaggio oggetto con una serie di 16 stringhe, un timestamp e 2 numeri interi. I picchi sono ok sulle macchine dei nostri sviluppatori (i messaggi sono ben consumati).I messaggi del messaggio RabbitMQ smettono di consumare messaggi
Poi sono arrivate le panchine. Per prima cosa abbiamo notato che, sulle nostre macchine, quando inviavamo molti messaggi, il consumatore a volte pendeva. Era lì, ma i messaggi si stavano accumulando in coda.
Quando siamo andati sul plateform panca:
- gruppo di 2 macchine RabbitMQ 4 core/3.2Ghz, 4GB di RAM, carico bilanciato da un VIP
- uno a 6 consumatori in esecuzione su macchine RabbitMQ, salvataggio dei messaggi in un DB mysql (stesso tipo di macchina per il DB)
- 12 produttori che eseguono su 12 macchine AS (tomcat), attaccati con jmeter in esecuzione su un'altra macchina. Il carico è circa da 600 a 700 http request al secondo, sui servlet che producono lo stesso carico di messaggi RabbitMQ.
abbiamo notato che volte, consumatori appendere (beh, non sono bloccati, ma essi non consumano più messaggi). Possiamo vedere che ogni consumatore risparmia circa 100 msg/sec nel database, quindi quando uno interrompe il consumo, i messaggi globali salvati per secondo in DB ricadono con lo stesso rapporto (se diciamo 3 consumatori si fermano, cadiamo intorno a 600 msg/sec a 300 msg/sec).
Durante questo periodo, i produttori sono a posto e continuano a produrre alla velocità jmeter (circa 600 msg/sec). I messaggi sono in coda e presi dai consumatori ancora "vivi".
Prima carichiamo tutti i servlet con i produttori, quindi lanciamo tutti i consumatori uno alla volta, controllando se le connessioni sono ok, quindi esegui jmeter.
Stiamo inviando messaggi a uno scambio diretto. Tutti i consumatori stanno ascoltando una coda persistente limitata allo scambio.
Questo punto è importante per la nostra scelta. Hai visto questo con rabbitmq, hai un'idea di cosa sta succedendo?
Grazie per le vostre risposte.
Questo potrebbe essere più appropriato per serverfault. – danben
Grazie, lo posterò anche in serverfault. –
Strano che non ci sia menzione delle versioni. Ad esempio, Ubuntu e Debian tendono a confezionare versioni più vecchie di roba, ma quando quella roba è uno strumento critico che è in fase di sviluppo attivo, come RabbitMQm è meglio eseguire versioni più recenti. –