Monthly Archives: diciembre 2014

RabbitMQ, Spring AMQP y Android MQTT

Para grandes proyectos, que necesitan de un servicio de mensajería masiva en tiempo real, hoy en día existen varias posibilidades en el mercado tecnológico. Las opciones, a la hora de elegir plataformas, brokers, protocolos, etc… son muy variadas, en esta entrada, voy a contar como implementar un sistema de notificaciones en tiempo real con las siguientes tecnologías propuestas.

Diagrama del sistema.

Sistema distribuido

Spring AMQP Appserver

- Servidor central de nuestro sistema distribuido, se conecta a RabbitMQ mediante el protocolo AMQP, y es el productor (producer) de todos los mensajes de nuestro sistema.

RabbitMQ Broker

- Broker de nuestro sistema distribuido, a el se conecta el AppServer (mediante AMQP), y todos los clientes mediante una aplicación móvil Android nativa

La elección de este broker, es debida a su integración natural con Spring (es desarrollado por SpringSource) y versatilidad, ademas de AMQP como protocolo por defecto, mediante plugins podemos dar compatibilidad a otros tan famosos como STOMP o el cada vez mas importante en la escena de los servicios pub/sub, MQTT. Su núcleo se basa en Spring-erlang, que es un modulo Java desarrollado por SpringSource bajo Erlang, un lenguaje especifico de altas prestaciones para programación distribuida, tolerancia a fallos, algoritmos de elección de líder, etc…

Android Client Application

- Es la aplicación cliente que se conectará con el broker para recibir las notificaciones, lo hará mediante la implementación de un servicio Android que mantendrá activa la conexión al servicio de notificaciones en segundo plano.

Eclipse PAHO MQTT Java Library

- Cliente MQTT, para subscribirnos al servicio pub/sub desde la aplicación móvil.

MQTT

- Protocolo utilizado por los clientes Android, desarrollado originalmente por IBM, es un protocolo telemétrico, en auge por sus altas prestaciones, eficiencia en la transmisión de la información, y bajo consumo energético (realmente importante en dispositivos móviles), originalmente fue desarrollado para las comunicaciones espaciales, de sensores y otros dispositivos electrónicos, Facebook recientemente reemplazo XMPP en su servicio de mensajería instantánea por MQTT.

AMQP

Protocolo muy versátil, en combinación con RabbitMQ nos da innumerables posibilidades para la publicación de mensajes mediante exchanges, topics y queues.

Empecemos…

Como el tutorial completo es bastante largo he decidido dividirlo en diferentes entradas, donde ire explicando mas detalladamente cada una de las partes.

  1. Instalación y configuración de RabbitMQ.
  2. Conectando AppServer a RabbitMQ con Spring-AMQP.
  3. Conectando Android a RabbitMQ con Eclipse PAHO.
Comparte esta entrada enShare on LinkedInTweet about this on TwitterShare on FacebookShare on Google+

Instalación y configuración de RabbitMQ

Este MOM (Message oriented middleware), ofrece una gran versatilidad en cuanto a procotocolos, es compatible con AMQP, STOMP y MQTT, estos dos últimos activando un plugin que viene por defecto con la distribución.

implementa un tipo de componentes denominados exchanges, los cuales permiten enlazar queues, topcis y otros exchanges entre si. Esta opción facilita mucho la labor de diseñar una jerarquía de colas mas compleja y dinámica.

Continue reading

Comparte esta entrada enShare on LinkedInTweet about this on TwitterShare on FacebookShare on Google+