MQTT--Java整合EMQX


1、简介

本文章实现了一个简单的MQTT客户端,使用Eclipse Paho库让Java和EMQX整合,测试客户端初始化时配置Broker地址、客户端ID、用户名和密码。连接成功后,订阅主题并发布消息

2、准备

前提是启动了EMQX服务,可以打开这个页面(目的是为了更清楚看见客户端连接和消息的发送):
在这里插入图片描述
不会的可以看这篇文章:MQTT–EMQX入门+MQTTX使用

3、使用步骤

3.1 引入依赖

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

3.2 创建生产者和消费者

生产者类:

package com.itxhj.emqxdemo.io;

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 App {
   
   
    public static void main(String[
### Java EMQX 集成指南 EMQX 是一种高性能的消息代理,支持 MQTT 协议。为了在 Java 应用程序中集成和使用 EMQX,可以采用以下方法: #### 使用 Eclipse Paho 客户端库 Eclipse Paho 提供了一个用于 JavaMQTT 客户端库,它能够轻松实现与 EMQX 的连接和消息传递。 以下是通过 Paho 实现基本功能的代码示例: ```java 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; public class MqttExample { public static void main(String[] args) throws MqttException { String brokerUrl = "tcp://broker.emqx.io:1883"; // 替换为实际的 EMQX 地址 String clientId = "JavaSampleClient"; MqttClient client = new MqttClient(brokerUrl, clientId); MqttConnectOptions options = new MqttConnectOptions(); options.setCleanSession(true); try { client.connect(options); // 连接到 EMQX 服务器 System.out.println("Connected to the broker."); // 设置回调函数处理接收到的消息 client.setCallback(new MqttCallback() { @Override public void connectionLost(Throwable cause) { System.out.println("Connection lost!"); } @Override public void messageArrived(String topic, MqttMessage message) throws Exception { System.out.println("Received Message: " + new String(message.getPayload())); } @Override public void deliveryComplete(IMqttDeliveryToken token) { System.out.println("Message delivered successfully."); } }); // 订阅主题 client.subscribe("test/topic"); // 发布消息到指定主题 MqttMessage msg = new MqttMessage("Hello from Java!".getBytes()); msg.setQos(1); client.publish("test/topic", msg); } catch (MqttException e) { e.printStackTrace(); } finally { if (client.isConnected()) { client.disconnect(); // 断开连接 } } } } ``` 上述代码展示了如何创建客户端实例并完成订阅、发布以及断开操作[^2]。 #### Maven依赖配置 要使项目具备访问 Paho 客户端的能力,在 `pom.xml` 文件中加入如下依赖项即可: ```xml <dependency> <groupId>org.eclipse.paho</groupId> <artifactId>org.eclipse.paho.client.mqttv3</artifactId> <version>1.2.5</version> <!-- 版本号可能随时间更新 --> </dependency> ``` #### 常见问题解决 如果遇到无法正常通信的情况,请确认以下几个方面: - **网络连通性**:确保应用能到达目标 EMQX 节点地址。 - **认证机制**:部分部署环境需提供用户名密码验证或其他形式的身份证明。 - **权限设置**:检查是否有足够的权限执行所需的操作如订阅特定话题等[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值