测试监听所有主题消息代码

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管理平台中,把当前用户改为超级管理员

更多推荐