J'ai besoin d'une haute performance bus de message pour mon application je suis donc d'évaluer la performance de l' ZeroMQ
, RabbiMQ
et Apache Qpid
. Pour mesurer la performance, je suis en cours d'exécution d'un programme de test qui publie dire 10 000 messages à l'aide de l'un des messages de la file d'attente de mise en œuvre et l'exécution d'un autre processus dans la même machine à consommer ces 10 000 messages. Puis-je enregistrer de la différence de temps entre le premier message publié et le dernier message reçu.
Suivants sont les paramètres que j'ai utilisé pour la comparaison.
-
RabbitMQ
: J'ai utilisé une "distribution" type d'échange et une file d'attente avec la configuration par défaut. J'ai utilisé le RabbitMQ C de la bibliothèque du client. -
ZeroMQ
: Mon éditeur publises d'tcp://localhost:port1
avecZMQ_PUSH
socket, Mon courtier en écoute surtcp://localhost:port1
et renvoie le message: tcp://localhost:usb2 et ma consommation est à l'écoute surtcp://localhost:port2
l'aideZMQ_PULL
socket. Je suis à l'aide d'un courtier au lieu de pairs à pairs de la communication enZeroMQ
de la comparaison de performance juste de l'autre message de la file d'attente de mise en œuvre qui utilise des courtiers. -
Qpid
C++ message broker: j'ai utilisé une "distribution" type d'échange et une file d'attente avec la configuration par défaut. J'ai utilisé le Qpid C++ de la bibliothèque du client.
Voici le résultat:
-
RabbitMQ
: il faut environ 1 seconde pour recevoir 10 000 messages. -
ZeroMQ
: Il faut environ 15 milli secondes pour recevoir 10 000 messages. -
Qpid
: Il faut environ 4 secondes pour recevoir 10 000 messages.
Questions:
- Quelqu'un similaire comparaison des performances entre les files d'attente de messages? Alors je tiens à comparer mes résultats avec les vôtres.
- Est-il possible que je pourrait accorder
RabbitMQ
ouQpid
à faire mieux?
Note:
Les tests ont été effectués sur une machine virtuelle avec deux alloués processeur. Le résultat peut varier pour différents matériels, cependant, je m'intéresse principalement à la performance relative de la MQ produits.