MQTT 是一种基于发布/订阅模式的 轻量级物联网消息传输协议 ,可在严重受限的硬件设备和低带宽、高延迟的网络上实现稳定传输。它凭借简单易实现、支持 QoS、报文小等特点,占据了物联网协议的半壁江山。
本文主要介绍如何在 Java 项目中使用 MQTT,实现客户端与服务器的连接、订阅和收发消息等功能。
本文的开发环境为:
- 构建工具:Maven
- IDE:IntelliJ IDEA
- Java 版本:JDK 1.8.0
本文将使用 Eclipse Paho Java Client 作为客户端,该客户端是 Java 语言中使用最为广泛的 MQTT 客户端库。
添加以下依赖到项目 pom.xml 文件中。
本文将使用 EMQX 提供的 免费公共 MQTT 服务器,该服务基于 EMQX 的 MQTT 云平台 创建。服务器接入信息如下:
- Broker: broker.emqx.io(中国用户可以使用 broker-cn.emqx.io)
- TCP Port: 1883
- SSL/TLS Port: 8883
设置 MQTT Broker 基本连接参数,用户名、密码为非必选参数。
然后创建 MQTT 客户端并连接。
说明
- MqttClient: 同步调用客户端,使用阻塞方法通信。
- MqttClientPersistence: 代表一个持久的数据存储,用于在传输过程中存储出站和入站的信息,使其能够传递到指定的 QoS。
- MqttConnectOptions: 连接选项,用于指定连接的参数,下面列举一些常见的方法。
- setUserName: 设置用户名
- setPassword: 设置密码
- setCleanSession: 设置是否清除会话
- setKeepAliveInterval: 设置心跳间隔
- setConnectionTimeout: 设置连接超时时间
- setAutomaticReconnect: 设置是否自动重连
如果要使用自签名证书进行 TLS/SSL 连接,需添加 bcpkix-jdk15on 到 pom.xml 文件。
然后使用如下代码创建 文件。
参照如下设置 。
创建一个发布客户端类 ,该类将发布一条 消息至主题 。
创建一个订阅客户端类 ,该类将订阅主题 。
MqttCallback 说明:
- connectionLost(Throwable cause): 连接丢失时被调用
- messageArrived(String topic, MqttMessage message): 接收到消息时被调用
- deliveryComplete(IMqttDeliveryToken token): 消息发送完成时被调用
接下来运行 ,订阅 主题。 然后运行 ,发布消息到 主题。 我们将会看到发布端成功发布消息,同时订阅端接收到消息。
至此,我们完成了在 Java 中使用 Paho Java Client 来作为 MQTT 客户端连接到 公共 MQTT 服务器,并实现了测试客户端与 MQTT 服务器的连接、消息发布和订阅。
完整代码请见:https://github.com/emqx/MQTT-Client-Examples/tree/master/mqtt-client-Java。
接下来,读者可访问 EMQ 提供的 MQTT 入门与进阶系列文章学习 MQTT 主题及通配符、保留消息、遗嘱消息等相关概念,探索 MQTT 的更多高级应用,开启 MQTT 应用及服务开发。
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.bianchenghao6.com/java-jiao-cheng/14086.html