package com.ruoyi.device.mqtt; import org.eclipse.paho.client.mqttv3.MqttException; import org.springframework.stereotype.Component; @Component public class MQSubscribe { /** * 订阅某个主题:MQTT服务器向WEB服务器发送数据 *主题:也称为底层网关唯一标识 * @param topic 设备编号,与底层交互的唯一标识 * @param qos MQTT服务器向WEB服务器发送数据 * qos为0:只向WEB服务器发送一次; * qos为1:至少向WEB服务器发送一次,接收方会响应一个报文; * qos为2:两者会进行至少两次请求/响应流程,避免数据在传输中的丢失 */ private static void subscribe(String topic, int qos) { try { MQClient.getClient().subscribe(topic,qos); } catch (MqttException e) { e.printStackTrace(); } } /** * 订阅某个主题,通信质量:qos默认为0 * 主题:也称为底层网关唯一标识 * @param topic 设备编号,与底层交互的唯一标识 */ public static void subscribe_0(String topic) { subscribe(topic, 0); } /** * 订阅某个主题,通信质量:qos默认为1 * 主题:也称为底层网关唯一标识 * @param topic 设备编号,与底层交互的唯一标识 */ public void subscribe_1(String topic) { subscribe(topic, 1); } /** * 订阅某个主题,通信质量:qos默认为2 * 主题:也称为底层网关唯一标识 * @param topic 设备编号,与底层交互的唯一标识 */ public void subscribe_2(String topic) { subscribe(topic, 2); } public void OffSubscribe(String topic) { try { MQClient.getClient().unsubscribe(topic); } catch (MqttException e) { e.printStackTrace(); } } }