Ich benötige einen Hochleistungsnachrichtenbus für meine Anwendung, damit ich die Leistung von ZeroMQ
, RabbitMQ
und bewerten kann Apache Qpid
. Um die Leistung zu messen, führe ich ein Testprogramm aus, das beispielsweise 10.000 Nachrichten mit einer der Nachrichtenwarteschlangenimplementierungen veröffentlicht und einen anderen Prozess auf demselben Computer ausführt, um diese 10.000 Nachrichten zu verarbeiten. Dann zeichne ich den Zeitunterschied zwischen der ersten veröffentlichten und der zuletzt empfangenen Nachricht auf.
Im Folgenden sind die Einstellungen aufgeführt, die ich für den Vergleich verwendet habe.
RabbitMQ
: Ich habe einen Austausch vom Typ "Fanout" und eine Warteschlange mit Standardkonfiguration verwendet. Ich habe die RabbitMQ C-Clientbibliothek verwendet.ZeroMQ
: Mein Publisher veröffentlichttcp://localhost:port1
mitZMQ_PUSH
Socket. Mein Broker hört zutcp://localhost:port1
und sendet die Nachricht erneut an tcp: // localhost: port2. Mein Konsument hört auf dietcp://localhost:port2
Verwendung vonZMQ_PULL
Socket. Ich verwende einen Broker anstelle einer Peer-to-Peer-KommunikationZeroMQ
, um den Leistungsvergleich mit anderen Implementierungen der Nachrichtenwarteschlange, die Broker verwenden, fair zu gestalten.Qpid
C ++ - Nachrichtenbroker: Ich habe einen Austausch vom Typ "Fanout" und eine Warteschlange mit Standardkonfiguration verwendet. Ich habe die Qpid C ++ - Clientbibliothek verwendet.
Es folgt das Leistungsergebnis:
RabbitMQ
: Es dauert ungefähr 1 Sekunde, um 10.000 Nachrichten zu empfangen.ZeroMQ
: Es dauert ungefähr 15 Millisekunden, um 10.000 Nachrichten zu empfangen.Qpid
: Der Empfang von 10.000 Nachrichten dauert ca. 4 Sekunden.
Fragen:
- Hat jemand einen ähnlichen Leistungsvergleich zwischen den Nachrichtenwarteschlangen durchgeführt? Dann vergleiche ich meine Ergebnisse gerne mit Ihren.
- Gibt es eine Möglichkeit , die Leistung zu optimieren
RabbitMQ
oderQpid
zu verbessern?
Hinweis:
Die Tests wurden auf einer virtuellen Maschine mit zwei zugewiesenen Prozessoren durchgeführt. Das Ergebnis kann für verschiedene Hardware unterschiedlich sein, ich bin jedoch hauptsächlich an der relativen Leistung der MQ-Produkte interessiert.