RabbitMQ


La siguiente descripción es para una instalación en RedHat, para Ubuntu al final se anotan algunos comentarios.

RED HAT

Descargar la clave de la firma.wget https://www.rabbitmq.com/rabbitmq-signing-key-public.asc

Verificamos la firma

gpg rabbitmq-signing-key-public.asc

Añadimos el repositorio de RabbitMQ

sudo apt-key add rabbitmq-signing-key-public.asc

Actualizamos la lista de paquetes

apt-get udate

Instalamos el servidor

sudo apt-get install rabbitmq-server

Habilitamos el plugin rabbitmq-managment

sudo /usr/sbin/rabbitmq-plugins enable rabbitmq_management

Se habilitaran también en automático:

mochiweb, webmachine, amqp_client, rabbitmq-mochiweb, rabbitmq-management-agent, and rabbitmq-management

Nota. En caso de que marque error por motivo del rabbitmq-env.conf, para el rabbitmq user

sudo touch /etc/rabbitmq/rabbitmq-env.conf

Se puede tomar el que se encuentra de ejemplo en /usr/share/doc/rabbitmq-servert

Finalmente verificar la configuración de las variables del ambiente que se definen para que los scripts de inicio las tomen antes de utilizar los valores default correspondientes a cada variable

/etc/rabbitmq/rabbitmq-env.congf

UBUNTU

  1. Registrar la clave en el registro de claves conocidas:
wget https://www.rabbitmq.com/rabbitmq-signing-key-public.asc
  1. Añadir el repositorio de RabbitMQ a la lista de repositorios de la máquina:
sudo apt-key add rabbitmq-signing-key-public.asc
  1. Borrar el archivo de clave y actualizar la lista de paquetes:
rm rabbitmq-signing-key-public.asc
sudo apt-get update
  1. Hacemos el backup del APT y  lo modificamos agregándole la línea en cursivas.
sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup
deb http://www.rabbitmq.com/debian/ testing main

Verificamos el cambio:

sudo cat /etc/apt/sources.list | grep testing 

   5. Instalar RabbitMQ:

sudo apt-get install rabbitmq-server

Al finalizar la instalación se inicializa el servidor y verificamos su estatus:

sudo service rabbitmq-server status

RabbitMQ Management

Default user: guest
Default password: guest

CLÚSTER

Para definir un cluster RabbitMQ se debe instalar en cada nodo el Rabbit; es importante no realizar ninguna configuración, porque vamos a configurar las instancias específicamente para el clúster.

Configuración

Esta es la configuración necesaria para un clúster, en el siguiente post se indicará la configuración para HA (alta disponibilidad).

rabbitmq-plugins enable rabbitmq_management

Verificar el estatus del plugin

rabbitmq-plugins  list

El archivo enabled_plugins contiene el listado de plugins:

[rabbitmq_management].

En el archivo de configuración en rabbitmq.config vamos a indicar el listado de nodos

[{rabbit,  
     [{cluster_nodes, 
       {['rabbit@nod03',
       'rabbit@nodo02',
       'rabbit@nodo01'],
   disc}}]}].

Note que, el nodo1 es el master al que añadiremos los nodos 2, 3, …n.

Finalmente, para añadir los nodos al cluster se debe ejecutar:

service rabbitmq-server start

Detenemos la herramienta de línea de comandos del Rabbit, es importante que no detengamos el servicio, sino únicamente el rabbitmqctl.

rabbitmqctl -n rabbit2 stop_app
rabbitmqctl -n rabbit2 join_cluster rabbit1@nodo01
rabbitmqctl -n rabbit2 start_app

La otra opción para crear el clúster, es únicamente habilitando el plugin e iniciando los nodos teniendo en cada uno el rabbitmq.config que sigue.

Crear/modificar el fichero rabbitmq.config para contener el listado de nodos del cluster, que únicamente funcionará para la primera vez que se levanta el clúster y no se ha realizado ninguna configuración, entonces tomará la configuración del clúster y lo conformará.

{['rabbit1@nodo01',
  'rabbit2@nodo01',
  'rabbit3@nodo01'],
['rabbit1@nodo01',
 'rabbit2@nodo01',
 'rabbit3@nodo01']}.

Reglas Alta Disponibilidad

Para este escenario se espera que se repliquen y sincronicen los mensajes que reciba el nodo1, en otros nodos.

ha-policy-nodes-retry

Pattern ^queue-incoming
Apply to queues
Definition ha-mode: exactly
ha-params: 2
ha-sync-mode: automatic
Priority 0

ha-policiy-nodes-hist

Pattern (^queue-events)|(^queue-happenings)
Apply to queues
Definition ha-mode: nodes
ha-params: rabbit2@nodomx02
rabbit3@nodomx03
ha-sync-mode: automatic
Priority 1

Después de levantar todo el clúster, se puede apreciar el número en azul indicando el estatus actual: sincronizado con 1 nodo, en el que se hace replicación.

EXCHANGES

Tipos: direct, topic, headers y fanout.

 


 

Cliente RabbitMQ

 

Descarga y configuración client RabbitMQ.

git clone https://github.com/yanellyjm/rabbitmq-client-java.git
mvn dependency:update
mvn clean install

 

REFERENCIAS

 

 

 

 

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s