一、发布消息
1、导入依赖
<dependency>
<groupId>org.fusesource.mqtt-client</groupId>
<artifactId>mqtt-client</artifactId>
<version>1.16</version>
</dependency>
<dependency>
<groupId>org.eclipse.paho</groupId>
<artifactId>org.eclipse.paho.client.mqttv3</artifactId>
<version>1.2.0</version>
</dependency>
2、定义MQTT的参数
private static final String username = "admin"; // MQTT的账号名 默认为admin
private static final String password = "public"; // MQTT的密码 默认为public
private static final String url = "tcp://127.0.0.1:1883"; // MQTT服务器的地址
private static final String clientId = "mqttDemo202202091017"; // 唯一的客户端id
private static final String topic = "topic/demo"; // 订阅或发布时的唯一地址,类似于url
3、进行mqttClient的创建和消息的推送
package com.qi.mqtt;
import org.eclipse.paho.client.mqttv3.MqttClient;
import org.eclipse.paho.client.mqttv3.MqttConnectOptions;
import org.eclipse.paho.client.mqttv3.MqttMessage;
import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;
public class MQTTPublishDemo {
private static final String username = "admin"; // MQTT的账号名 默认为admin
private static final String password = "public"; // MQTT的密码 默认为public
private static final String url = "tcp://127.0.0.1:1883"; // MQTT服务器的地址
private static final String clientId = "mqttDemo202202091017"; // 唯一的客户端id
private static final String topic = "topic/demo"; // 订阅或发布时的唯一地址,类似于url
private static MqttClient mqttClient;
public static void main(String[] args) throws Exception {
mqttClient = new MqttClient(url, clientId, new MemoryPersistence());
MqttConnectOptions options = new MqttConnectOptions();
options.setUserName(username);
options.setPassword(password.toCharArray());
options.setConnectionTimeout(10); // 连接超时时间
mqttClient.connect(options);
int count = 0;
while (true){
count++;
String s = "发送第"+count+"条消息";
MqttMessage msg = new MqttMessage();
msg.setQos(1);
msg.setPayload(s.getBytes());
mqttClient.publish(topic, msg);
System.out.println(s);
Thread.sleep(2000);
}
}
}
4、用MQTTExplorer来进行测试
注意:
- 服务器需要自己搭建
- 服务器搭建好后默认的访问端口是18083