Probablemente muchos desarrolladores (me incluyo), hemos oido poco sobre cola de mensajes es una perspectiva distinta a lo que comúnmente estamos acostumbrados : las peticiones y respuestas que suceden en la red. Me enfocare en describir el uso MQ con la herramienta RabbitMQ.
Primero que es Message Qeue
Por concepto es la comunicación via mensajes entre sistemas donde los emisores producen mensajes y para que estos lleguen a su destinatario deben ser entregados a un intercambiador que los colocará en la cola del respectivo destinatario, finalmente el destinatario puede ir progresivamente desencolando y procesando los mensajes o dejar que el intercambiador se los haga llegar, esto por medio de diferentes tipos de rutas.
¿Por qué utilizar RabbitMQ?
Sirve como una buena herramienta backend de mensajería para hacer PUB/SUB, etc en nuestro middleware.
- Muy robusta
- Se puede configurar para utilizar mensajes persistentes
- Fácil de utilizar
- Tiene enlaces para todos los idiomas principales
- Open Source
- Un montón de plugins
- Ampliamente utilizado
- Una buena documentación
- Un montón de tutoriales
- Un montón de patrones de uso
- oportunidades de expansión
Uso
- Instalar el backend en un server
- Conectarse a el usando su lenguajes de edicion.
- Definir los intercambios y sus políticas directamente en el código
- Enviar mensajes
Patrones comunes de uso
Simple Messaging
Simple usado para desacoplar los componentes
Un productor P produce mensajes, mientras que el consumidor C lo consume.
At-most-once semántica para colas persistentes
At-least-once semántica si se utilizan reconocimientos
Work Queues
Múltiple consumidores comparten cargas de trabajo
Los mensajes pueden ser o bien prebuscados por los workers o entregarse cada vez que un worker está a disposición
Pub Sub
Aquí el intercambio X se encarga de la entrega de mensajes igual que en el caso típico, se utiliza la entrega de conductores de salida
Las colas se generan para los consumidores, en los que será enviado sus mensajes relevantes.
Routing
(Pub/sub + topics)
Si varios consumidores escuchan el mismo topic a continuación se utiliza fanout delivery
Temas jerárquicos también se pueden utilizar:
fridge.context. *
*. *. error
meetingroom.projector
meetingroom. *
RPC
Las solicitudes y las respuestas son coincidentes por un ID de correlación
El cliente también especifica que el servidor debe enviar la respuesta
Gracias






No hay comentarios:
Publicar un comentario