WSO2: Broker de mensajería IoT (WSO2 IoTS)

WSO2 es un servidor de mensajería para conectar dispositivos IoT (ver entrada RabbitMQ primeros pasos con colas de mensajería), funciona como muchos otros servidores sobre un motor JDK (JMS – Java Message Service) lo que lo convierte en una solución multiplataforma de facto.  Permite trabajar con la base de datos embebida con la aplicación, para entornos empresariales puede trabajar con los sistemas de gestión de bases de datos más populares como Oracle, MySQL, PostreSQL.

Sin entrar en detalles un broker funciona como un enrutador de mensajería, las aplicaciones que se comunican con el servidor de mensajería pueden jugar varios roles, como productor / publicador de mensajes en un topic (gestión de colas basadas en contenidos) determinado o como consumidores / subcriptores de mensajes (Publish–subscribe pattern). El nodo central puede recibir de múltiples origenes y enrutar el mensaje al canal correcto, incluso transformar el mensaje a una representación alternativa.

WSO2: Working with Topics

Es arquitectura favorece la escalabilidad y la incorporación de nuevos nodos. La dependencia mutua entre aplicaciones se minimiza (decoupling), los publicadores que envían mensajes no lo hacen directamente a un receptor especifico, no tienen porque saber si al otro lado hay una aplicación, varias o ninguna recibiendo esos mensajes.

Podemos descargar el servidor del siguiente enlace. En la Web de descarga también ofrecen la subscripción a la comunidad y hospedar nuestra infraestructura IoT en su nube (Beta y previo pago).

Protocolos soportados:

  • Advanced Message Queuing Protocol (AMQP)(0-91))
  • Message Queuing Telemetry Transport Protocol (MQTT) v 3.1.1.

WSO2 IoTS es Open Source. He descargado el servidor wso2mb-3.1.0.zip a mi PC con Win7Pro y lo he descomprimido desde el raíz C:\wso2mb-3.1.0\.

Estructura de carpetas principales:

  • README.txt: El primer fichero que hay leer siempre.
  • bin: Script para Shell Linux y DOS.
  • client-lib: librerías JMS.
  • dbscripts: Scripts SQL para MySQL, Oracle…
  • lib: Librerías necesarias para WSO2.
  • repository.
    • conf: Ficheros de configuración.
    • database.
    • logs: Ficheros de logs de la ejecución.
  • resources: Recursos adicionales.
  • tmp: Ficheros temporales.

Una vez descomprimido sólo debemos ejecutar el script \bin\wso2server.bat para arrancar el servidor.

Una vez que arranca podemos administrar el servidor usando la aplicación Web en la siguiente dirección: https://localhost:9443/carbon  (usuario “admin” y clave “admin” por defecto).

Referencias externas:

 

 

 

 

 

Anuncios

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();
?>