mqtt监听所有的主题消息,错误代码: 128
·
测试监听所有主题消息代码
package com.ruoyi.mqttplatform.test.mqtt;
import org.eclipse.paho.client.mqttv3.*;
import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;
public class MqttSubscriberAllTopics {
public static void main(String[] args) {
// MQTT broker 配置
String broker = "tcp://*********:1883"; // 替换为你的MQTT服务器地址
String clientId = "JavaSubscriberAllTopics";
String username = "*********"; // 替换为你的MQTT用户名
String password = "*********"; // 替换为你的MQTT密码
MemoryPersistence persistence = new MemoryPersistence();
try {
// 创建MQTT客户端
MqttClient mqttClient = new MqttClient(broker, clientId, persistence);
// 设置回调
mqttClient.setCallback(new MqttCallback() {
@Override
public void connectionLost(Throwable cause) {
System.out.println("连接断开,原因: " + cause.getMessage());
}
@Override
public void messageArrived(String topic, MqttMessage message) {
System.out.println("收到消息 - Topic: " + topic);
System.out.println("消息内容: " + new String(message.getPayload()));
System.out.println("QoS: " + message.getQos());
System.out.println("-----------------------------");
}
@Override
public void deliveryComplete(IMqttDeliveryToken token) {
// 发布消息完成时调用(订阅者不需要实现)
}
});
// 连接选项(设置用户名和密码)
MqttConnectOptions connOpts = new MqttConnectOptions();
connOpts.setCleanSession(true);
connOpts.setUserName(username); // 设置用户名
connOpts.setPassword(password.toCharArray()); // 设置密码(转为char数组)
System.out.println("连接到broker: " + broker);
mqttClient.connect(connOpts);
System.out.println("已连接");
// 订阅所有主题(使用#通配符)
mqttClient.subscribe("#");
System.out.println("已订阅所有主题(#)");
} catch (MqttException e) {
System.err.println("MQTT 连接失败!错误代码: " + e.getReasonCode());
System.err.println("可能的原因:");
switch (e.getReasonCode()) {
case 4:
System.err.println("- 用户名或密码错误");
break;
case 5:
System.err.println("- 未授权(可能未提供认证信息)");
break;
default:
System.err.println("- 网络问题或 Broker 未运行");
}
e.printStackTrace();
}
}
}
需要在mqtt管理平台中,把当前用户改为超级管理员

更多推荐

所有评论(0)