简易实现
所需jar
<dependency>
<groupId>org.eclipse.paho</groupId>
<artifactId>org.eclipse.paho.client.mqttv3</artifactId>
<version>1.2.0</version>
</dependency>
发送端
public class MqttSend {
public static void main(String[] args) {
String urlFrontSuffix = "tcp://xx.xx.xx.xx:1883";
String clienId = String.valueOf(System.currentTimeMillis());
System.out.println(clienId);
String content = "test_msg001";
String frontTopic = "/data/test";
String allTopic = frontTopic+"/"+"test_topic";
try{
MemoryPersistence memoryPersistence = new MemoryPersistence();
MqttClient client = new MqttClient(urlFrontSuffix, clienId, memoryPersistence);
MqttConnectOptions connOpts = new MqttConnectOptions();
client.connect(connOpts);
MqttMessage message = new MqttMessage(content.getBytes());
message.setQos(0);
client.publish(allTopic, message);
client.disconnect();
client.close();
}catch (Exception e){
e.printStackTrace();
}
}
}
接收端
public class MqttAccept {
public static void main(String[] args) {
String urlFrontSuffix = "tcp://xx.xx.xx.xx:1883";
String clienId = String.valueOf(System.currentTimeMillis());
System.out.println(clienId);
String frontTopic = "/data/test";
String allTopic = frontTopic + "/" + "test_topic";
try {
MemoryPersistence memoryPersistence = new MemoryPersistence();
MqttClient client = new MqttClient(urlFrontSuffix, clienId, memoryPersistence);
MqttConnectOptions options = new MqttConnectOptions();
options.setCleanSession(true);
options.setConnectionTimeout(10);
options.setKeepAliveInterval(20);
options.setConnectionTimeout(10);
options.setKeepAliveInterval(20);
client.setCallback(new MqttCallback() {
@Override
public void connectionLost(Throwable throwable) {
try {
System.out.println("开始重连");
Thread.sleep(3000);
client.connect(options);
} catch (InterruptedException e) {
e.printStackTrace();
} catch (MqttSecurityException e) {
e.printStackTrace();
} catch (MqttException e) {
e.printStackTrace();
}
}
@Override
public void messageArrived(String s, MqttMessage mqttMessage) throws Exception {
String payload = new String(mqttMessage.getPayload());
System.out.println("MqttAccept_________"+ payload);
}
@Override
public void deliveryComplete(IMqttDeliveryToken iMqttDeliveryToken) {
System.out.println("deliveryComplete");
}
});
client.connect(options);
client.subscribe(allTopic,0);
System.out.println("连接成功");
} catch (Exception e) {
e.printStackTrace();
}
}
}
centos7 快速安装部署mqtt
安装部署
cd /usr/local
mkdir mqtt
cd mqtt
wget https://www.emqx.io/downloads/broker/v3.2.1/emqx-centos7-v3.2.1.zip
unzip emqx-centos7-v3.2.1.zip
cd /usr/local/mqtt/emqx
./bin/emqx start
./bin/emqx stop
./bin/emqx console
修改配置文件
cd /usr/local/mqtt/emqx/etc
vim emqx.conf
listener.tcp.external = 0.0.0.0:1883
docker 容器部署
docker pull eclipse-mosquitto