连接HiveMQ代理器实现MQTT协议传输

先下载MQTTX: MQTTX: Your All-in-one MQTT Client Toolbox

使用线上免费的MQTTX BROKER:The Free Global Public MQTT Broker | Try Now | EMQ

打开MQTTX,创建连接,点击NEW SUBSCRIPTION,创建一个主题,这里使用test/topic,在下面Json中填写配置好的主题,点击发送测试OK。订阅者,建立一个主题:

java 复制代码
package com.jasonhong.application.media.mq.mqtt;

import org.eclipse.paho.client.mqttv3.IMqttDeliveryToken;
import org.eclipse.paho.client.mqttv3.MqttCallback;  
import org.eclipse.paho.client.mqttv3.MqttClient;  
import org.eclipse.paho.client.mqttv3.MqttConnectOptions;  
import org.eclipse.paho.client.mqttv3.MqttException;  
import org.eclipse.paho.client.mqttv3.MqttMessage;  
import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;  
  
public class MqttSubscriber implements MqttCallback {  
  
    public static void main(String[] args) {  
        String brokerUrl = "tcp://broker.hivemq.com:1883"; // 使用公共MQTT代理或你的MQTT代理地址
//        String brokerUrl = "tcp://localhost:1883"; // Mosquitto代理地址和端口
        String clientId = "JavaSubscriber";  
        String topic = "test/topic";  
        int qos = 2;  
  
        try (MqttClient client = new MqttClient(brokerUrl, clientId, new MemoryPersistence())) {  
            client.setCallback(new MqttSubscriber());  
            MqttConnectOptions connOpts = new MqttConnectOptions();  
            connOpts.setCleanSession(true);  
            client.connect(connOpts);  
            client.subscribe(topic, qos);  
        } catch (MqttException e) {  
            e.printStackTrace();  
        }  
    }  
  
    @Override  
    public void connectionLost(Throwable cause) {  
        System.out.println("Connection lost");  
        cause.printStackTrace();  
    }  
  
    @Override  
    public void messageArrived(String topic, MqttMessage message) throws Exception {  
        System.out.println("Message arrived: " + new String(message.getPayload()));  
    }  
  
    @Override  
    public void deliveryComplete(IMqttDeliveryToken token) {  
        System.out.println("Delivery complete");  
    }  
}

发布者发送给一个消息

java 复制代码
package com.jasonhong.application.media.mq.mqtt;

import org.eclipse.paho.client.mqttv3.MqttClient;
import org.eclipse.paho.client.mqttv3.MqttConnectOptions;  
import org.eclipse.paho.client.mqttv3.MqttException;  
import org.eclipse.paho.client.mqttv3.MqttMessage;  
import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;  
  
public class MqttPublisher {  
  
    public static void main(String[] args) {  
        String brokerUrl = "tcp://broker.hivemq.com:1883"; // 使用公共MQTT代理或你的MQTT代理地址
//        String brokerUrl = "tcp://localhost:1883"; // Mosquitto代理地址和端口
        String clientId = "JavaPublisher";  
        String topic = "test/topic";  
        int qos = 2;  
        String content = "Hello, MQTT!";  
  
        try (MqttClient client = new MqttClient(brokerUrl, clientId, new MemoryPersistence())) {  
            MqttConnectOptions connOpts = new MqttConnectOptions();  
            connOpts.setCleanSession(true);  
            client.connect(connOpts);  
            MqttMessage message = new MqttMessage(content.getBytes());  
            message.setQos(qos);  
            client.publish(topic, message);  
            System.out.println("Message published: " + content);  
        } catch (MqttException e) {  
            e.printStackTrace();  
        }  
    }  
}
相关推荐
啦啦啦_9999几秒前
6. AI面试题之 MCP
java
小曹要微笑3 分钟前
C#的运算符重载
开发语言·c#·运算符重载·c#运算符重载
我是唐青枫5 分钟前
C#.NET Channel 深入解析:高性能异步生产者消费者模型实战
开发语言·c#·.net
飞天小猪啊5 分钟前
Mybatis
java·spring·mybatis
Ivanqhz7 分钟前
活跃范围重写(Live Range Rewriting)
开发语言·c++·后端·算法·rust
Memory_荒年7 分钟前
分布式锁:当你的“锁”从部门会议室升级到公司全球预订系统
java·后端
人道领域10 分钟前
【绝对干货】C语言常量,变量,内存全方位总结:从入门到精通,这一篇就够了!
c语言·开发语言
yuyuxun111 分钟前
基于JSP购物网站系统的设计与实现 毕业设计-附源码03645
java·开发语言·python·django·flask·课程设计·pygame
几分醉意.16 分钟前
先发制人:用 Bright Data 抢先捕捉 TikTok 爆款内容(附实战案例)
java·大数据·人工智能
SuperherRo17 分钟前
JAVA攻防-Webshell免杀&JSP&JSPX脚本&URL类加载&远程分离&文件包含&工具特征消除
java·文件包含·webshell·url类加载·特征消除