Skip to content

GitLab

  • Menu
Projects Groups Snippets
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
  • Sign in
  • G General
  • Project information
    • Project information
    • Activity
    • Members
  • Packages & Registries
    • Packages & Registries
    • Container Registry
  • Wiki
    • Wiki
  • Activity
Collapse sidebar
  • dgt3.0_esp
  • General
  • Wiki
  • MQTT

Last edited by Rabazo Rubio May 19, 2021
Page history

MQTT

Para realizar la conexión al bróker MQTT es posible utilizar uno de los mucho lenguajes que disponen de librerias específicas para ello e incluso directamente con librerías como Mosquito MQTT.

En este caso, vamos a ver un ejemplo hecho con Java y SpringBoot.

Conexión a MQTT con Java y SpringBoot

Para incluir la librería en un proyecto de Maven, tendremos que agregar la siguiente dependencia:

<dependency>
    <groupId>org.springframework.integration</groupId>
    <artifactId>spring-integration-mqtt</artifactId>
    <version>5.4.6</version>
</dependency>

Configuración del cliente

Al usar la librería, lo primero que debemos hacer para recibir mensajes de un bróker MQTT es obtener una implementación de la interfaz IMqttClient. Esta interfaz contiene todos los métodos requeridos por una aplicación para establecer una conexión con el servidor y recibir mensajes.

La librería viene de fábrica con dos implementaciones de esta interfaz, una asíncrona (MqttAsyncClient) y una síncrona (MqttClient). En nuestro caso, nos centraremos en la versión síncrona.

La configuración en sí es un proceso de dos pasos: primero creamos una instancia de la clase MqttClient y luego la conectamos a nuestro servidor.

Creación de una nueva instancia de IMqttClient

El siguiente fragmento de código muestra cómo crear una nueva instancia síncrona de IMqttClient:

String subscriberId = UUID.randomUUID().toString();
IMqttClient subscriber = new MqttClient("ssl://mqtt-dev.cmobility30.es:8883",subscriberId);

En este caso, estamos usando el constructor más simple disponible, que toma la dirección del endpoint de nuestro bróker MQTT y un identificador de cliente, que identifica de manera única a nuestro cliente.

Conexión con el servidor

Nuestra instancia de MqttClient recién creada no está conectada al servidor. Lo hacemos llamando a su método connect(), pasando opcionalmente una instancia MqttConnectOptions que nos permite personalizar algunos aspectos del protocolo.

En particular, podemos usar esas opciones para pasar información adicional como credenciales de seguridad, modo de recuperación de sesión, modo de reconexión, etc.

La clase MqttConnectionOptions expone esas opciones como propiedades simples que podemos establecer usando métodos de establecimiento normales. Solo necesitamos establecer las propiedades requeridas para nuestro escenario; las restantes asumirán valores predeterminados.

El código que se utiliza para establecer una conexión con el servidor tiene este aspecto:

MqttConnectOptions options = new MqttConnectOptions();
options.setAutomaticReconnect(true);
options.setCleanSession(true);
options.setConnectionTimeout(10);
subscriber.connect(options);

Aquí, definimos nuestras opciones de conexión para que:

  • La librería intentará automáticamente volver a conectarse al servidor en caso de que se produzca un fallo en la red

  • Descartará los mensajes no enviados de una ejecución anterior

  • El tiempo de espera de la conexión se establece en 10 segundos

Recibir mensajes

Para recibir mensajes del bróker MQTT, necesitamos usar una de las variantes del método subscribe(), que nos permite especificar:

  • Uno o más filtros de tópicos para los mensajes que queremos recibir.

  • La QoS asociada

  • El controlador de devolución de llamada para procesar los mensajes recibidos

En el siguiente ejemplo, mostramos cómo agregar un receptor de mensajes a una instancia de IMqttClient existente para recibir mensajes de un tópico determinado.

subscriber.subscribe("TOPIC", (tpic, msg) -> {
    byte[] payload = msg.getPayload();
});    

Con este ejemplo hemos visto lo sencillo que es implementar un cliente a un bróker MQTT.

Si se desea ampliar la información, se puede encontrar aquí.

Clone repository

Home

Swagger a Postman

MQTT


Volver a Caso de Uso 5

Volver a Caso de Uso 7

Volver a Caso de Uso 9

Volver a Caso de Uso 10

Volver a Caso de Uso 11

Volver a Caso de Uso 12

Volver a Caso de Uso 13

Volver a Caso de Uso 14