MQTT Paho Java客户端

本文介绍了如何在Java中使用EclipsePahoJava客户端库与MQTT服务器进行连接、订阅、消息收发及取消订阅。包括添加Maven依赖、配置连接参数和在EMQXBroker上的实战操作。
摘要由CSDN通过智能技术生成

1. Paho介绍

Paho Java客户端是用Java编写的MQTT客户端库,用于开发在JVM或其他Java兼容平台(例如Android)上运 行的应用程序。

Paho不仅可以对接EMQ X Broker,还可以对接满足符合MQTT协议规范的消息代理服务端,目前Paho可以支 持到MQTT5.0以下版本。MQTT3.3.1协议版本基本能满足百分之九十多的接入场景。

Paho Java客户端提供了两个API:

  1. MqttAsyncClient提供了一个完全异步的API,其中活动的完成是通过注册的回调通知的。
  2. MqttClient是MqttAsyncClient周围的同步包装器,在这里,功能似乎与应用程序同步。

2. Paho实现消息收发

1. 找到上一期搭建的项目:emq-demo,添加坐标依赖
 

xml

复制代码

<dependency> <groupId>org.eclipse.paho</groupId> <artifactId>org.eclipse.paho.client.mqttv3</artifactId> <version>1.2.2</version> </dependency>

需要在application.yml中添加自定义的配置:

 

yaml

复制代码

mqtt: broker-url: tcp://192.168.10.200:1883 client-id: demo-client username: user password: 123456

同时需要创建属性配置类来加载该配置数据,创建:MqttProperties

使用 Eclipse Paho Java 连接到部署 

在本教程中您将学习在 Java 中使用 Eclipse Paho Java Client, 实现客户端与 MQTT 服务器的连接、订阅、收发消息、取消订阅等功能。

Eclipse Paho Java 是一个开源的 MQTT 客户端库,可用于在 Java 应用程序中实现 MQTT 通信协议的功能。它提供多个 API,简化 MQTT 协议的实现和使用,并支持多种 MQTT 版本。使用它,可以轻松创建 MQTT 客户端,发送或接收消息,处理连接、订阅和取消订阅等操作。Eclipse Paho Java 还提供一些高级功能,如自动重连和 SSL 安全连接等。它是一个功能强大且易于使用的 MQTT 客户端库,可帮助 Java 开发人员快速实现 MQTT 通信协议的功能。

前置准备 

获得 MQTT 服务器 

  • 使用 EMQX 提供的免费公共 MQTT 服务器(仅支持单向认证),该服务基于 EMQX 的全托管的 MQTT 消息云服务创建。服务器连接信息如下:

    • 连接地址: broker.emqx.io
    • TCP Port: 1883
    • SSL/TLS Port: 8883
    • WebSocket 端口: 8083
    • WebSocket TLS/SSL 端口: 8084
  • 您也可以自己创建部署,在部署概览下可以查看到连接相关的信息,请确保部署状态为运行中。使用 TCP 端口或 SSL/TLS 端口 测试连接到 MQTT 服务器。如果您是自己创建部署,请设置认证鉴权,在部署控制台认证鉴权 > 认证 中设置用户名和密码,用于连接验证。

安装 Maven 

本项目使用 Maven 进行项目的构建,请安装 Maven

初始化项目 

  1. 使用 Intellij IDEA 新建一个 Maven 项目,参考 Creating a Maven project
  2. 在 src/main/java 下创建包: io.emqx.mqtt


链接:https://juejin.cn/post/7029129664882819102

使用 Eclipse Paho Java 连接到部署 | EMQX Cloud 文档

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在使用Mqtt PahoJava)时,如果连接中断或者网络不稳定,我们需要实现Mqtt客户端的重连机制,以保证消息的可靠传递。下面是一个实现Mqtt PahoJava)重连的例子: ```java import org.eclipse.paho.client.mqttv3.*; import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence; public class MqttClientDemo { private static final String BROKER_URL = "tcp://localhost:1883"; private static final String TOPIC = "test"; private static final String CLIENT_ID = "mqtt-java-client"; public static void main(String[] args) throws MqttException, InterruptedException { MemoryPersistence persistence = new MemoryPersistence(); MqttClient client = new MqttClient(BROKER_URL, CLIENT_ID, persistence); MqttConnectOptions options = new MqttConnectOptions(); options.setCleanSession(true); options.setAutomaticReconnect(true); // 启用自动重连 client.setCallback(new MqttCallback() { @Override public void connectionLost(Throwable throwable) { System.out.println("Connection lost!"); } @Override public void messageArrived(String s, MqttMessage mqttMessage) throws Exception { System.out.println("Message arrived: " + new String(mqttMessage.getPayload())); } @Override public void deliveryComplete(IMqttDeliveryToken iMqttDeliveryToken) { System.out.println("Delivery complete!"); } }); client.connect(options); client.subscribe(TOPIC, 1); while (true) { if (!client.isConnected()) { System.out.println("Client disconnected! Trying to reconnect..."); client.connect(options); client.subscribe(TOPIC, 1); } Thread.sleep(1000); } } } ``` 在这个例子中,我们设置了自动重连机制: ```java options.setAutomaticReconnect(true); ``` 然后在while循环中不断检查客户端是否连接,如果客户端断开了连接,就会尝试重新连接: ```java if (!client.isConnected()) { System.out.println("Client disconnected! Trying to reconnect..."); client.connect(options); client.subscribe(TOPIC, 1); } ``` 这样就可以实现Mqtt PahoJava)的重连了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值