JAVA开发MQTT总结MQTT 介绍它是一种 机器之间通讯 machine-to-machine (M2M)、物联网 Internet of Things (IoT)常用的一种轻量级消息传输协议
适用于网络带宽较低的场合
包含发布、订阅模式,通过一个代理服务器(broker),任何一个客户端(client)都可以订阅或者发布某个主题的消息,然后订阅了该主题的客户端则会收到该消息
mqtt还是之前公司有需求所以写的一个demo,在这里记录下来,方便有人使用的时候查阅,不涉及mqtt的具体讲解,只是贴代码和运行过程。
MQTT的入门,以及特性,协议,结构的讲解,请看下面这篇文章
什么是MQTT,它能干什么,它的应用场景在哪里?请参考下面这篇文章
本文中采用的MQTT服务器Apache-Apollo的下载配置搭建过程,请参考下面这篇文章
下面就开始创建broker,
RaindeMacBook-Pro:bin rain$ ./apollo create mybroker
Creating apollo instance at: mybroker
Generating ssl keystore...
Warning:
JKS 密钥库使用专用格式。建议使用 "keytool -importkeystore -srckeystore keystore -destkeystore keystore -deststoretype pkcs12" 迁移到行业标准格式 PKCS12。
You can now start the broker by executing:
"/Users/rain/Documents/Soft/apache-apollo-1.7.1/bin/mybroker/bin/apollo-broker" run
Or you can run the broker in the background using:
"/Users/rain/Documents/Soft/apache-apollo-1.7.1/bin/mybroker/bin/apollo-broker-service" start
进入新生成的broker中
RaindeMacBook-Pro:bin rain$ ls
apollo apollo.cmd mybroker testbroker
RaindeMacBook-Pro:bin rain$ cd mybroker/
RaindeMacBook-Pro:mybroker rain$ ls
bin data etc log tmp
RaindeMacBook-Pro:mybroker rain$ cd bin
RaindeMacBook-Pro:bin rain$ ls
apollo-broker apollo-broker-service
可以看到有两个文件,启动apollo-broker
启动成功以后,就可以在浏览器中访问了,默认用户名和密码是admin,password
刚进去是,Topics选项卡是空的,我是在运行程序后截图的,所以有一个topic列表
配置Maven
在pom.xml中添加以下配置
org.eclipse.paho
org.eclipse.paho.client.mqttv3
1.2.0
再创建下面的类
MqttServer
import org.eclipse.paho.client.mqttv3.*;
import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;
public class MqttServer2 {
/**
* 代理服务器ip地址