Conceptos básicos para comenzar con RabbitMQ

¿Qué es una cola de mensajes?

Los mensajes son datos que se pasan entre diferentes aplicaciones. El mensaje aquí puede ser muy simple, como contener solo una cadena, o puede ser muy complejo, contener varios objetos anidados. Message Queue (Message Queue) es simplemente una forma de comunicación entre aplicaciones. El mensaje se devuelve inmediatamente después de ser enviado, y el sistema de mensajes garantiza la transmisión confiable del mensaje. El productor del mensaje solo necesita enviar el mensaje al MQ., No es necesario que te preocupes por el consumo de mensajes. Del mismo modo, los consumidores de mensajes solo necesitan extraer mensajes de MQ independientemente de quién los haya producido. A través de este modelo de "existencia de objetos mutuamente desconocidos", el productor del mensaje y el consumo del mensaje Desacoplado.


¿En qué escenarios considera el uso de colas de mensajes?

De lo anterior, podemos saber que la cola de mensajes es un mecanismo de cooperación asincrónico entre aplicaciones, entonces, ¿cuándo necesitamos usar MQ? Tomando un sistema de pedidos común como ejemplo, la lógica comercial después de que el usuario hace clic en "Realizar pedido" puede incluir: deducir el inventario, generar los datos del pedido correspondiente y enviar notificaciones por SMS. En la etapa inicial del desarrollo del proyecto y del negocio, estas lógicas pueden ejecutarse juntas. A medida que aumenta el número de órdenes para el desarrollo del negocio, es necesario mejorar el rendimiento de los servicios del sistema. En este momento, algunas operaciones que no necesitan entrar en vigor inmediatamente se puede separar y ejecutar de forma asincrónica, como el envío de notificaciones por SMS. En este escenario, se puede utilizar MQ. Una vez completado el proceso de pedido principal (como la deducción de inventario, la generación de datos de pedido, etc.), se envía un mensaje a MQ para completar rápidamente el proceso principal, y luego otro hilo extraerá el MQ mensaje y ejecutarlo La lógica de negocio correspondiente. El ejemplo aquí utiliza principalmente colas de mensajes para desacoplar.

Características de RabbitMQ

RabbitMQ es una implementación de código abierto de AMQP desarrollada por el lenguaje Relang. AMQP (Advanced Message Queue: Advanced Message Queue Protocol) es un estándar abierto para protocolos de capa de aplicación. Está diseñado para middleware orientado a mensajes. Los clientes y el middleware de mensajes basados ​​en este protocolo pueden transmitir mensajes y no se ven afectados por productos ni lenguajes de desarrollo. Y otras condiciones. RabbitMQ originalmente se originó a partir de un sistema de mensajería, utilizado para almacenar y reenviar mensajes en un sistema distribuido. Tiene las siguientes características:

Confiabilidad RabbitMQ utiliza algunos mecanismos para garantizar la confiabilidad, como la persistencia, el mecanismo de confirmación de transmisión (ack) y la confirmación de liberación.

Estrategia de enrutamiento flexible Antes de que el mensaje ingrese a la cola, el mensaje se enruta a través de Exchange Para las funciones de enrutamiento típicas, RabbitMQ ha proporcionado algunas implementaciones de Exchange integradas. Para funciones de enrutamiento complejas, se pueden vincular varios intercambios y sus propios intercambios también se pueden implementar a través de un mecanismo de complemento.

Clúster de mensajes Múltiples servidores RabbitMQ pueden formar un clúster para formar un Broker lógico.

Las colas de alta disponibilidad se pueden duplicar en los clústeres del clúster, de modo que las colas aún estén disponibles cuando algunos nodos tengan problemas.

Múltiples protocolos RabbitMQ admite múltiples protocolos de cola de mensajes, como STOMP, MQTT, etc.

El cliente multilingüe RabbitMQ casi admite muchos lenguajes de uso común, como Java, .NET, etc.

La interfaz de administración RabbitMQ proporciona una interfaz de usuario fácil de usar que permite a los usuarios monitorear y administrar muchos aspectos del agente de mensajes.

Instalación y ejecución de RabbitMQ (mac)

1. Instalación Debido a que RabbitMQ se basa en el lenguaje Erlang, debe instalar el entorno Erlang antes de instalar RabbitMQ. Sin embargo, debido a que es un entorno Mac, puede usar HomeBrew para instalar. Actualice brew antes de instalar:


brew update

Luego instale RabbitMQ, el Erlang del que depende se instalará automáticamente durante el proceso de instalación.

Conceptos básicos para comenzar con RabbitMQ

2. El inicio y funcionamiento de RabbitMQ es muy simple. Después de encontrar su directorio de instalación (el directorio predeterminado instalado con Homwbrew es: / usr / local / Cellar / rabbitmq), ingrese al directorio sbin del directorio, y podrá ver que allí son 6 con rabbitmq Para el archivo ejecutable al principio, simplemente ejecute rabbitmq-server.

Conceptos básicos para comenzar con RabbitMQ

Si el inicio es normal, puede ver la información de registro del proceso de inicio y el final completado con 6 complementos, lo que también significa que se cargan 6 complementos por defecto durante el inicio.

Conceptos básicos para comenzar con RabbitMQ

En este punto, visite http: // localhost: 15672 a través de un navegador para ver su interfaz de administración (el nombre de usuario y la contraseña predeterminados son invitados), y puede agregar usuarios en la página de la pestaña de administración. La interfaz de administración es la siguiente:

Conceptos básicos para comenzar con RabbitMQ

PD: El método anterior no es iniciar en segundo plano. Si desea iniciar RabbitMQ como un demonio en segundo plano, puede agregar el parámetro -detached al iniciar.

Conceptos básicos para comenzar con RabbitMQ

3. Consulta del estado del servidor Hay un archivo ejecutable rabbitmqctl bajo sbin del directorio de instalación, que proporciona soluciones casi integrales para la administración de RabbitMQ y puede proporcionar la mayoría de los comandos de operación y mantenimiento. El estado del parámetro se puede utilizar para consultar la información de estado del servidor RabbitMQ.

Conceptos básicos para comenzar con RabbitMQ

Conceptos básicos en RabbitMQ

1. Modelo de mensaje Casi todas las abstracciones de MQ son el mismo proceso: los consumidores se suscriben a una determinada cola, los productores producen mensajes, luego los publican en la cola y finalmente envían los mensajes a los consumidores que escuchan la cola. Como se muestra abajo:

Conceptos básicos para comenzar con RabbitMQ

2. Conceptos básicos La descripción general abstracta anterior de la cola de mensajes, específicamente RabbitMQ, tiene algunos conceptos únicos, RabbitMQ es una implementación de código abierto del protocolo AMQP y la mayoría de sus conceptos internos son algunos conceptos del protocolo AMQP.

Conceptos básicos para comenzar con RabbitMQ

Conceptos básicos para comenzar con RabbitMQ
Conceptos básicos para comenzar con RabbitMQ
3. Enrutamiento de mensajes en AMQP Existen algunas diferencias entre el proceso de enrutamiento de mensajes en AMQP y el JMS familiar para los desarrolladores de Java.Las funciones de Exchange y Binding se han agregado a AMQP. El productor envía el mensaje al Exchange, el mensaje finalmente llega a la cola y es recibido por el consumidor, y el Binding determina a qué cola se debe enviar el mensaje del exchange.

Conceptos básicos para comenzar con RabbitMQ

4. Tipo de intercambio Exchange tiene estrategias de distribución ligeramente diferentes según los diferentes tipos al distribuir mensajes Actualmente hay cuatro tipos: directo, fanout, tema, encabezados. Los encabezados coinciden con el encabezado del mensaje AMQP en lugar de la clave de enrutamiento. Además, el cambio de encabezados y el cambio directo son exactamente iguales, pero el rendimiento es mucho peor y casi no se usa en este momento, así que solo mire los otros tres tipos.

4.1, tipo directo

Conceptos básicos para comenzar con RabbitMQ

Si la clave de enrutamiento en el mensaje es coherente con la clave de enlace en el enlace, el intercambio envía el mensaje a la cola correspondiente. La clave de ruta coincide exactamente con el nombre de la cola. Si una cola está vinculada al conmutador y requiere que la clave de ruta sea "perro", solo se reenviará el mensaje marcado con la clave de ruta "perro" y "perro.puppy" no se reenviará, ni se reenviará. dog.guard "y así sucesivamente. Es un modo de unidifusión de coincidencia exacta.

4.2, tipo fanout

Conceptos básicos para comenzar con RabbitMQ

Cada mensaje enviado al intercambio de tipo fanout se enviará a todas las colas vinculadas. El intercambio en abanico no procesa claves de enrutamiento, sino que simplemente une la cola al intercambio, y cada mensaje enviado al intercambio se reenviará a todas las colas vinculadas al intercambio. Al igual que la transmisión de subred, cada host de la subred recibe una copia del mensaje. El tipo fanout es el más rápido para reenviar mensajes.

3. Tipo de tema

Conceptos básicos para comenzar con RabbitMQ

El cambio de tema asigna los atributos de la clave de enrutamiento del mensaje a través de la coincidencia de patrones y hace coincidir la clave de enrutamiento con un patrón. En este momento, la cola debe estar vinculada a un patrón. Divide la clave de enrutamiento y la cadena vinculada en palabras. Estas palabras se separan con puntos. También reconoce dos caracteres comodín: el símbolo "#" y el símbolo "". El símbolo # coincide con 0 o más palabras, y el símbolo no coincide con más o menos de una palabra, que también es el tipo más utilizado en proyectos reales.


para resumir

Este artículo habla principalmente sobre la instalación de RabbitMQ y la introducción de conceptos básicos. Dado que está desarrollado en base al lenguaje Erlang, puede que no sea muy amigable para algunos desarrolladores de Java que quieran comprender los detalles de implementación subyacentes y solucionar problemas más complejos.

Supongo que te gusta

Origin blog.51cto.com/15075507/2607594
Recomendado
Clasificación