继上期分享:C++开发MQTT实例代码分享 之后,又有朋友留言:
所以,有求必应哈!!!那么这期就来个Java版本的示例代码。当然,个人本身不熟悉IT这类语言,所以难免有些问题,各位朋友如果发现有问题,请在留言区不吝赐教哈!!!
以下是一个使用Java开发MQTT的完整实例代码,基于Eclipse Paho库实现。
添加Maven依赖
<project...>
<repositories>
<repository>
<id>Eclipse Paho Repo</id>
<url>%REPOURL%</url>
</repository>
</repositories>
...
<dependencies>
<dependency>
<groupId>org.eclipse.paho</groupId>
<artifactId>org.eclipse.paho.client.mqttv3</artifactId>
<version>%VERSION%</version>
</dependency>
</dependencies>
</project>
https://repo.eclipse.org/content/repositories/paho-releases/
或者快照版本 https://repo.eclipse.org/content/repositories/paho-snapshots/
替换 %REPOURL%
。用所需的版本号替换 %VERSION%,例如1.2.1。如果在发布版本中发现缺少功能或存在错误,您可能希望尝试使用快照版本,看看这是否有所帮助,然后再提出功能请求或问题。具体的参考链接:
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;
publicclassMqttPublisher {
publicstaticvoidmain(String[] args) {
// 连接参数
Stringbroker="tcp://broker.hivemq.com:1883"; // 公共MQTT代理
StringclientId="JavaPublisher";
Stringtopic="java/mqtt/test";
Stringcontent="Hello from Java MQTT Publisher!";
intqos=2; // 服务质量等级 (0,1,2)
try {
// 1. 创建客户端
MqttClientclient=newMqttClient(broker, clientId, newMemoryPersistence());
// 2. 配置连接选项
MqttConnectOptionsoptions=newMqttConnectOptions();
options.setCleanSession(true);
options.setConnectionTimeout(10);
options.setKeepAliveInterval(20);
// 如需认证可添加:
// options.setUserName("username");
// options.setPassword("password".toCharArray());
// 3. 连接代理
System.out.println("Connecting to broker: " + broker);
client.connect(options);
System.out.println("Connected!");
// 4. 创建消息并设置QoS
MqttMessagemessage=newMqttMessage(content.getBytes());
message.setQos(qos);
message.setRetained(true); // 设置保留消息
// 5. 发布消息
client.publish(topic, message);
System.out.println("Message published: " + content);
// 6. 断开连接
client.disconnect();
System.out.println("Disconnected");
// 7. 关闭客户端
client.close();
} catch (MqttException e) {
e.printStackTrace();
}
}
}
订阅者示例代码
import org.eclipse.paho.client.mqttv3.*;
import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;
publicclassMqttSubscriberimplementsMqttCallback {
publicstaticvoidmain(String[] args) {
String broker = "tcp://broker.hivemq.com:1883";
String clientId = "JavaSubscriber";
String topic = "java/mqtt/test";
int qos = 2;
try {
// 1. 创建客户端
MqttClient client = newMqttClient(broker, clientId, newMemoryPersistence());
// 2. 配置回调
client.setCallback(newMqttSubscriber());
// 3. 连接选项
MqttConnectOptions options = newMqttConnectOptions();
options.setCleanSession(true);
// 4. 连接代理
System.out.println("Connecting to broker: " + broker);
client.connect(options);
System.out.println("Connected!");
// 5. 订阅主题
client.subscribe(topic, qos);
System.out.println("Subscribed to topic: " + topic);
System.out.println("Waiting for messages...");
// 保持程序运行以接收消息
Thread.sleep(Long.MAX_VALUE);
} catch (Exception e) {
e.printStackTrace();
}
}
// 连接丢失回调
@Override
publicvoidconnectionLost(Throwable cause) {
System.out.println("Connection lost! " + cause.getMessage());
}
// 消息到达回调
@Override
publicvoidmessageArrived(String topic, MqttMessage message) {
System.out.println("\nReceived message:" +
"\n\tTopic: " + topic +
"\n\tQoS: " + message.getQos() +
"\n\tContent: " + newString(message.getPayload()));
}
// 消息传递完成回调
@Override
publicvoiddeliveryComplete(IMqttDeliveryToken token) {
// 发布者使用的方法,订阅者可忽略
}
}
常见问题处理
tcp://test.mosquitto.org:1883
)MqttConnectOptions
中添加用户名密码options.setUserName("admin");
options.setPassword("password123".toCharArray());
3.SSL连接:
ssl://
协议头扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有