2012-06-28 8 views
9

Tengo un escenario en el que tengo una serie de procesos que necesito realizar, cada paso se realiza y escala en aplicaciones independientes. Estoy usando intercambios de temas para todos los intercambios. topología actual es algo como esto:RabbitMQ Intercambios de tema: 1 Intercambio vs Muchos intercambios

P -> X -> Q -> C/P -> X -> Q -> C

Estamos "control de versiones" nuestras colas para hacer frente a los requerimientos probables cambio que afecte la estructura del mensaje Encuadernaciones podrían ser algo como esto:

step1.exchange obligado a step1.v1.queue con step1.v1 clave de unión

step1.exchange obligado a step1.v2.queue con la unión step1.v2 clave

Hay otros patrones de enlace que no están relacionados con la versión que también hacen que los intercambios tópicos sean la opción adecuada. Sin embargo, podríamos salirse con la suya con solo usar un intercambio para lograr lo mismo.

TLDR: ¿Es su beneficio el uso de múltiples intercambios tópicos en lugar de un intercambio tópico cuando su caso de uso podría funcionar de cualquier manera?

+0

Gracias @robthewolf. El uso de intercambios separados ciertamente ayuda a conceptualizar, explicar y documentar la topología. Por supuesto, requiere un poco más de configuración.Sin embargo, estoy muy interesado en el impacto en el rendimiento. –

Respuesta

0

simplemente copiar algunos fragmentos clave para usted.
https://spring.io/blog/2011/04/01/routing-topologies-for-performance-and-scalability-with-rabbitmq/

  • Si usted tiene un dominio finito de teclas de enrutamiento en el gráfico de una aplicación, muchas bolsas de cargabilidad de salida podría ser el sistema más adecuado (1: 1 mapeo de intercambio por clave de enrutamiento)

  • Si tiene un número potencialmente infinito de claves de enrutamiento, considere intercambios de temas

  • Para el enrutamiento de temas, el rendimiento disminuye a medida que aumenta el número de enlaces

  • intercambios Fanout son muy rápidos porque no tienen enrutamiento para procesar aún si se vincula a un gran número de colas que cambia

  • intercambios directos son una forma más rápida de los intercambios tema, siempre y cuando no es necesario el comodín

  • problemas Solución de problemas a través de 100.000 colas podrían ser tedioso en comparación con una topología con varios enlaces, un menor número de intercambios y colas

  • un número muy elevado de los intercambios y las colas ocupan más memoria que puede ser significativo, pero esto realmente depende

A partir de RabbitMQ 2.4.0, lanzado 23 de marzo del 2011, un nuevo algoritmo de optimización tema de enrutamiento es disponible que es 60 veces más rápido en el pico que el algoritmo tema anterior. Debido a esto, una recomendación es ir por menos intercambios y colas, y más enrutamiento porque el aumento de tiempo ahora es mínimo

Cuestiones relacionadas