Necesito un bus de mensajes de alto rendimiento para mi aplicación, así que estoy evaluando el rendimiento de ZeroMQ
, RabbitMQ
y Apache Qpid
. Para medir el rendimiento, estoy ejecutando un programa de prueba que publica, digamos, 10,000 mensajes usando una de las implementaciones de la cola de mensajes y ejecutando otro proceso en la misma máquina para consumir estos 10,000 mensajes. Luego registro la diferencia de tiempo entre el primer mensaje publicado y el último mensaje recibido.
A continuación se muestran las configuraciones que utilicé para la comparación.
RabbitMQ
: Usé un intercambio de tipo "fanout" y una cola con la configuración predeterminada. Usé la biblioteca cliente de RabbitMQ C.ZeroMQ
: Mi editor publica entcp://localhost:port1
conZMQ_PUSH
socket, Mi corredor escuchatcp://localhost:port1
y reenvía el mensaje a tcp: // localhost: port2 y mi consumidor escucha eltcp://localhost:port2
uso deZMQ_PULL
socket. Estoy usando un intermediario en lugar de la comunicación entre paresZeroMQ
para que la comparación de rendimiento sea justa con otra implementación de cola de mensajes que utiliza intermediarios.Qpid
Agente de mensajes C ++: utilicé un intercambio de tipo "fanout" y una cola con la configuración predeterminada. Usé la biblioteca cliente Qpid C ++.
A continuación se muestra el resultado de rendimiento:
RabbitMQ
: tarda aproximadamente 1 segundo en recibir 10.000 mensajes.ZeroMQ
: Tarda unos 15 milisegundos en recibir 10.000 mensajes.Qpid
: Tarda unos 4 segundos en recibir 10.000 mensajes.
Preguntas:
- ¿Alguien ha realizado una comparación de rendimiento similar entre las colas de mensajes? Entonces me gusta comparar mis resultados con los tuyos.
- ¿Hay alguna forma en que pueda ajustar
RabbitMQ
oQpid
mejorar su rendimiento?
Nota:
Las pruebas se realizaron en una máquina virtual con dos procesadores asignados. El resultado puede variar según el hardware; sin embargo, lo que más me interesa es el rendimiento relativo de los productos MQ.