RabbitMQ learning: la primera base teórica

1. Definición

Cola de mensajes : un contenedor que contiene mensajes durante la transmisión de mensajes.

Este es un modelo de consumidor-productor más clásico, que es más abstracto y analógico: el hilo A necesita enviar un mensaje al hilo B (los hilos A y B no están necesariamente en la misma máquina), el hilo A primero envía el mensaje Enviado al servidor de la cola de mensajes, y luego el hilo B lee o se suscribe al mensaje en la cola de mensajes en el servidor de mensajes. No hay comunicación directa entre los hilos A y B. El servidor MQ actúa como un relé en el medio.

2. Escenarios aplicables.

Más adecuado para transmisión asincrónica.

Asíncrono : al remitente no le importa si el mensaje se envió con éxito, solo envía el mensaje y no obtiene si el mensaje se envió con éxito.

Sincronización : al remitente le preocupa si el mensaje se envió correctamente. Después de enviar el mensaje, esperará a que el receptor devuelva un código de estado, determinará si el mensaje se envió correctamente de acuerdo con el código de estado y luego realizará la acción correspondiente.

Tome sincrónico y asincrónico en Http como ejemplo :

Por ejemplo, la comunicación entre el cliente de arquitectura B / S común y el servidor es síncrona, es decir, envíe la solicitud -> espere a que el servidor procese y devuelva el mensaje -> obtenga el mensaje devuelto por el servidor, y el proceso se completa.

Por ejemplo: la tecnología Ajax es asíncrona, la solicitud se desencadena por un evento-> procesamiento del servidor (el navegador no tiene que esperar, aún puede hacer otras cosas) -> el procesamiento está completo.

3. RabbitMQ

Hay muchos productos similares en Message Queue Server, como RabbitMQ, Redis, ZeroMQ, ActiveMQ, Jafka / Kafka, etc.

RabbitMQ es una implementación estándar de AMQP (Advanced Message Queuing Protocol), y una introducción rápida se puede ver aquí: http://www.rabbitmq.com/getstarted.html.

3.1 Concepto de rol

Cada proyecto de código abierto tiene su propio método de diseño y función de módulo, y RabbitMQ no es una excepción. El diagrama de estructura es el siguiente:

Inserte la descripción de la imagen aquí

Broker: la entidad del servidor de la cola de mensajes

Intercambio: Intercambio de mensajes, que especifica las reglas por las cuales los mensajes se enrutan a qué cola.

Cola: portador de cola de mensajes, cada mensaje se colocará en una o más colas.

Enlace: Enlace, su función es vincular el intercambio y la cola de acuerdo con las reglas de enrutamiento.

Clave de enrutamiento: clave de enrutamiento, el intercambio entrega mensajes basados ​​en esta clave.

vhost: un host virtual. Se pueden configurar múltiples vhosts en un intermediario para separar los permisos de diferentes usuarios.

productor: Un productor de mensajes es un programa que entrega mensajes.

consumidor: un consumidor de mensajes es un programa que recibe mensajes.

canal: canal de mensajes En cada conexión del cliente, se pueden establecer múltiples canales y cada canal representa una tarea de sesión.

3.2 Proceso de trabajo

  • Cliente productor :
  1. El cliente se conecta al servidor RabbitMQ y abre un canal de mensajes (canal);
  2. El cliente declara un intercambio de mensajes (intercambio) y establece atributos relacionados;
  3. El cliente declara una cola de mensajes (cola) y establece propiedades relacionadas;
  4. El cliente utiliza la clave de enrutamiento para establecer una relación vinculante entre el intercambio de mensajes (intercambio) y la cola de mensajes (cola);
  5. Los mensajes del cliente se entregan al intercambio de mensajes (intercambio);
  6. El cliente cierra el canal de mensajes (canal) y la conexión con el servidor.
  • Lado del servidor :

Después de que el intercambio recibe el mensaje, realiza el enrutamiento del mensaje en función de la clave del mensaje y el enlace establecido, y entrega el mensaje a una o más colas de mensajes.

También hay varios tipos de intercambios:

(1). Interruptor directo: entrega basada en la clave. Por ejemplo, cuando la clave de enlace se establece en abc durante el enlace, solo la clave establecida en abc se publicará en la cola cuando el cliente envíe la información.

(2). Interruptor de tema: entregar la clave después de la coincidencia de patrones. Por ejemplo: el símbolo "#" coincide con uno o más caracteres, el símbolo "*
" coincide con una serie de caracteres alfabéticos consecutivos, por ejemplo "abc. #" Puede coincidir con "abc.def.ghi" y "abc.
*" Solo puede coincidir "Abc.def".

(3) Interruptor Fanout: adopta el modo de transmisión. Cuando llega el mensaje, se enviará a todas las colas vinculadas al interruptor.

  • Cliente consumidor :
    (aún no investigado)

3.3 Persistencia del mensaje RabbitMQ

RabbitMQ admite la persistencia de datos, es decir, escribir datos en el disco puede aumentar la seguridad de los datos. La persistencia de la cola de mensajes incluye tres partes:

  1. Persistencia de intercambio de mensajes (intercambio), especifique el duradero como 1 al declarar
  2. Persistencia de la cola de mensajes (cola), especifique durable como 1 al declarar
  3. Persistencia del mensaje, especifique delivery_mode como 2 al entregar (1 no es persistente)

Si tanto el intercambio de mensajes (intercambio) como la cola de mensajes (cola) son persistentes, entonces el enlace entre ellos (Enlace) también es persistente. Si hay una persistencia y una no persistencia entre el intercambio de mensajes y la cola de mensajes, no se permite ningún enlace.

Publicó 40 artículos originales · 25 alabanzas · 100,000+ vistas

Supongo que te gusta

Origin blog.csdn.net/yym373872996/article/details/105651557
Recomendado
Clasificación