RabbitMQ primeros pasos con colas de mensajería

Las MQ (Message Queue) son sistemas de almacenamiento de mensajes donde juegan un papel principal los roles de:

  • Publishers o creadores de mensajes en la cola.
  • Workers o consumidores de mensajes.

Ambos trabajan sobre un sistema independiente donde encolan mensajes y se van consumiendo por uno o varios agentes.

Gracias a un sistema de mensajería independiente podemos asegurar de que estos no se pierdan al menos hasta que no se consuman, podemos decidir el momento de consumirlos a intervalos determinados.

RabbitMQ es uno de los sistemas más populares, es de código abierto y disponible para múltiples plataformas. Cambien ofrecen implementaciones de clientes para múltiples lenguajes de programación.

Lo primero es descargar el instalador para Windows de este enlace e instalarlo (se instala en C:\Program Files\RabbitMQ Server), Actualmente la versión es la 3.6.1 (probablemente necesitaras instalar el interprete de lenguaje de programación Erlang previamente).

Una vez instaladas ambas aplicaciones vamos a tratar de hacer un par de ejemplos basados en PHP.

El servidor RabbitMQ  se instala como servicio de Windows.

Ejemplo 1: Productor y consumidor en PHP

Este ejemplo esta tomado directamente de la Web oficial de Rabbit. Consiste en 2 scripts, un productor y un consumidor.

Para realizar el ejemplo es necesaria la API php-amqplib que instalamos con Composer (debemos descargar e instalar para Win32), Composer es un gestor de dependencias para paquetes de PHP.

Creamos un fichero composer.json con el siguiente contenido:

{
    "require": {
        "php-amqplib/php-amqplib": "2.5.*"
    }
}

Y ejecutamos composer install en la carpeta donde esta el fichero.

Envió de mensajes send.php

<?php
require_once __DIR__ . '/vendor/autoload.php';
use PhpAmqpLib\Connection\AMQPStreamConnection;
use PhpAmqpLib\Message\AMQPMessage;
$connection = new AMQPStreamConnection('localhost', 5672, 'guest', 'guest');
$channel = $connection->channel();
$channel->queue_declare('hello', false, false, false, false);
$msg = new AMQPMessage('Hello World!');
$channel->basic_publish($msg, '', 'hello');
echo " [x] Sent 'Hello World!'\n";
$channel->close();
$connection->close();
?>

 

Anuncios

3 pensamientos en “RabbitMQ primeros pasos con colas de mensajería

  1. Pingback: WSO2: Broker de mensajería IoT (WSO2 IoTS) | Internet y GNU/Linux

  2. Pingback: C# RabbitMQClient: Productor de mensajes básico (con WSO2) usando .NET/C# en VS2012 | Internet y GNU/Linux

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s