es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo integrar un broker MQTT en un proyecto Spring Boot

Cómo integrar un broker mqtt en un proyecto de spring boot?

Ya había intentado spring-boot-starter-activemq, pero es un cliente, no un broker.

El objetivo principal es hacer un puente de mensajes entre un broker mqtt en la nube y un broker mqtt en la red interna, incluyendo la gestión de mensajes y temas.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para integrar un broker MQTT en un proyecto Spring Boot, puedes utilizar la biblioteca Eclipse Paho MQTT. Aquí están los pasos:

    1. Agrega la biblioteca del cliente MQTT Paho a las dependencias de tu proyecto. Puedes hacer esto agregando lo siguiente a tu archivo build.gradle:
    dependencies {
        implementation 'org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.2.5'
    }
    
    1. Crea un bean de configuración para el cliente MQTT. Este bean contendrá los detalles de conexión del cliente, como la URL del broker, el nombre de usuario y la contraseña. Aquí hay un ejemplo:
    @Configuration
    public class MqttConfig {
    
        @Value("${mqtt.brokerUrl}")
        private String brokerUrl;
    
        @Value("${mqtt.username}")
        private String username;
    
        @Value("${mqtt.password}")
        private String password;
    
        @Bean
        public MqttClient mqttClient() throws MqttException {
            MqttConnectOptions connOpts = new MqttConnectOptions();
            connOpts.setUserName(username);
            connOpts.setPassword(password.toCharArray());
    
            MqttClient client = new MqttClient(brokerUrl, MqttClient.generateClientId());
            client.connect(connOpts);
    
            return client;
        }
    }
    
    1. Utiliza el bean de configuración para crear un objeto cliente que se pueda utilizar para enviar y recibir mensajes MQTT. Así es como puedes hacerlo:
    @Service
    public class MyMqttService {
    
        @Autowired
        private MqttClient mqttClient;
    
        public void publishMessage(String topic, String payload) throws MqttException {
            MqttMessage message = new MqttMessage(payload.getBytes());
            message.setQos(0);
    
            mqttClient.publish(topic, message);
        }
    
        public void subscribeToTopic(String topic) throws MqttException {
            mqttClient.subscribe(topic, (topic, message) -> {
                System.out.println("Received message: " + message);
            });
        }
    }
    

    En este ejemplo de servicio, el método publishMessage envía un mensaje a un tema, mientras que el método subscribeToTopic escucha mensajes en un tema específico. Estos métodos utilizan el objeto mqttClient creado en el bean de configuración.

    Con estos pasos completados, ahora puedes utilizar la mensajería MQTT en tu proyecto Spring Boot.

Comments are closed.