Introducción
Cualquier administrador de sistemas experimentado sabe que a veces es muy útil e incluso necesario dejar las tareas para más adelante, especialmente si la tarea lleva mucho tiempo y consume muchos recursos. Para hacer esto, necesita un intermediario de mensajes:un programa que recibe mensajes (tareas) de varios remitentes (aplicaciones web), forma una cola a partir de ellos y luego los distribuye entre los procesos de trabajo.
Este artículo se centrará en el proyecto RabbitMQ:un conjunto de aplicaciones abiertas para implementar las funciones de un intermediario de mensajes que implementa el Protocolo avanzado de cola de mensajes (AMQP).
Mensajes, intermediarios de mensajes y secuencia
La mensajería es una forma de intercambiar ciertos datos entre procesos, aplicaciones, servidores virtuales y físicos. Estos mensajes, que realizan algunas funciones computacionales, pueden contener casi cualquier cosa, desde texto sin formato hasta grandes bloques de datos binarios. Para la correcta ejecución de este proceso, se necesita un programa de terceros:este es el intermediario de mensajes.
Un intermediario de mensajes suele ser un grupo de aplicaciones, cada uno de los cuales está diseñado para procesar una determinada etapa de la mensajería:recibir un mensaje, definirlo en la cola y transferir el mensaje al proceso de trabajo responsable de su ejecución. A menudo, en lugar de soluciones completas, se utilizan programas que originalmente no estaban destinados a este trabajo (bases de datos, cron daemon, etc.); simplemente crean una cola de mensajes (que técnicamente representa búferes infinitos) y luego los pasan para su procesamiento automático o para sondeo.
¿Por qué necesita un intermediario de mensajes?
Los corredores de mensajes actúan como intermediarios entre varios servicios (aplicaciones web). Reducen significativamente la carga y acortan el tiempo de entrega de los mensajes, ya que las tareas que tardan en procesarse se distribuyen entre flujos de trabajo diseñados exclusivamente para realizar estas tareas. Proporcionan un canal confiable para transmitir mensajes de una aplicación a otra.
¿Cuándo necesita un intermediario de mensajes?
En general, la funcionalidad básica de los intermediarios de mensajes cubre muchas áreas, incluidas, entre otras, las siguientes:
- Reducir el tiempo de respuesta de los servidores web a las solicitudes (porque no tienen que realizar tareas que consumen muchos recursos).
- Distribución del mensaje a varios destinatarios (por ejemplo, para su procesamiento).
- Los usuarios sin conexión pueden recuperar todos los datos más tarde.
- Modo de operación completamente asincrónico con sistemas de servidor.
- Ordenamiento y priorización de tareas;
- Equilibrio de carga entre procesos de trabajo.
- Mejorar la confiabilidad y el tiempo de actividad de la aplicación.
Y mucho más.
Una breve reseña de RabbitMQ
RabbitMQ (lanzado en 2007) es uno de los intermediarios de mensajes de código abierto más populares con licencia de Mozilla Public License v1.1 como una implementación del Protocolo avanzado de colas de mensajes. Diseñado en Erlang, RabbitMQ es bastante fácil de usar e instalar.
¿Cómo funciona RabbitMQ?
RabbitMQ proporciona una interfaz que conecta a los remitentes (Editores) con los destinatarios (Consumidores) mediante un intermediario que distribuye los datos en las listas apropiadas:colas de mensajes.
APPLICATION EXCHANGE TASK LIST WORKER [DATA] -------> [DATA] ------> [D]+[D][D][D] ---> [DATA] Publisher EXCHANGE Queue Consumer
Beneficios de RabbitMQ
A diferencia de otras soluciones, RabbitMQ es una pila de aplicaciones completa y no una base simple para la aplicación de su elección. Proporciona todas las herramientas necesarias en el complejo.
Una breve reseña de AMQP
AMQP (Advanced Message Queuing Protocol) es un estándar abierto generalizado para la distribución y transmisión de mensajes. Como protocolo y estándar, establece un marco común para la interacción de varias aplicaciones y agentes de mensajes y elimina los problemas causados por el diseño de programas individuales.
Instalación de RabbitMQ
Los paquetes RabbitMQ son proporcionados por CentOS/RHEL y Ubuntu/Debian. Pero, como regla, tales paquetes están desactualizados. Por lo tanto, se recomienda descargar e instalar RabbitMQ manualmente.
Nota :Se recomienda que todas las acciones manuales se realicen en un servidor nuevo para no interrumpir el funcionamiento de las aplicaciones iniciadas anteriormente y no provocar un error de configuración.Instalar RabbitMQ en CentOS/RHEL
Antes de comenzar a instalar RabbitMQ, debe instalar las dependencias del programa, una de las cuales es Erlang. Sin embargo, antes que nada, es necesario actualizar el sistema y las aplicaciones estándar; para hacer esto, ejecuta:
# yum -y update
Para la instalación de Erlang puede usar:
# Add and enable relevant application repositories: # Note: We are also enabling third party remi package repositories. wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm sudo rpm -Uvh remi-release-6*.rpm epel-release-6*.rpm # Finally, download and install Erlang: yum install -y erlang
ahora puedes instalar RabbitMQ:
# Download the latest RabbitMQ package using wget: wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.2.2/rabbitmq-server-3.2.2-1.noarch.rpm # Add the necessary keys for verification: rpm --import http://www.rabbitmq.com/rabbitmq-signing-key-public.asc # Install the .RPM package using YUM: yum install rabbitmq-server-3.2.2-1.noarch.rpm
Instalar RabbitMQ en Ubuntu
El proceso de instalación de RabbitMQ en Ubuntu/Debian es casi el mismo en CentOS. Primero, necesita actualizar el software:
# apt-get update # apt-get -y upgrade
Agregar clave rabbitmq:
# curl -fsSL https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc | sudo apt-key add -
Actualizar el paquete:
# apt-get update
Ahora puede instalar rabbitmq RabbitMQ:
$ sudo apt-get install rabbitmq-server
Gestión de RabbitMQ
Como se mencionó anteriormente, el corredor RabbitMQ es muy fácil de usar. Esta sección proporciona instrucciones para administrar y configurar RabbitMQ.
Habilitación de la consola de administración
RabbitMQ Management Console (RabbitMQ Management Console) es uno de los complementos disponibles que le permite monitorear los procesos del servidor RabbitMQ a través de una interfaz gráfica de usuario basada en la web.
Con esta consola, puede:
- Administrar mensajes, colas de mensajes, conexiones y usuarios;
- Haga un seguimiento de las colas de mensajes, las conexiones y las tasas de mensajes
- Enviar y recibir mensajes;
- Hacer un seguimiento de los procesos de Erlang y el uso de la memoria;
Y mucho más.
Para habilitar la administración de RabbitMQ, ejecute el comando:
$ sudo rabbitmq-plugins enable rabbitmq_management
Ahora puede abrir la consola de administración en el navegador visitando your_ip:15672.
Default rabbitmq user – guest. Default rabbitmq password – guest
Administración de RabbitMQ en CentOS/RHEL
Para habilitar el inicio automático de RabbitMQ, debe ejecutar:
# chkconfig rabbitmq-server on
Para iniciar, detener, reiniciar y verificar el estado, use los siguientes comandos:
# start: /sbin/service rabbitmq-server start # stop: /sbin/service rabbitmq-server stop # restart: /sbin/service rabbitmq-server restart # status: /sbin/service rabbitmq-server status
Administración de RabbitMQ en Ubuntu/Debian
Para iniciar, detener, reiniciar y verificar el estado de rabbitmq en Ubuntu/Debian, use los siguientes comandos:
# start: service rabbitmq-server start # stop: service rabbitmq-server stop # restart: service rabbitmq-server restart # status: service rabbitmq-server status
¡Ahora su servidor rabbitmq está listo para usar!
Configuración de RabbitMQ
RabbitMQ viene con configuraciones estándar. En general, son bastante confiables y no requieren edición.