Linux mqtt服务器搭建:
- mqtt服务器依赖java环境,先从这个网址下载java的JDK文件下载链接 注意不要下载错了,选择好自己的系统,千万不要下载成Demos文件 我这里选择的是:
- 解压出来,将解压的 jdk1.8.0_144文件夹放到 /usr/local
- 修改环境变量在 ~/.bashrc 或者 /etc/profile最后加上 当有了java命令时,java环境就搭建好了(记得把bin下所有的文件加上可执行权限)
- 从这个网站下载apache-apollo文件下载链接注意选择好自己的系统 我这里选择的是:
- 解压出来 :cd apache-apollo-1.7.1/bin/
- 创建一个 mybroker:
./apollo create mybroker
- 进入里面执行文件:
cd mybroker/bin
./apollo-broker run
到这里服务器就创建好了,也可以让这个服务器后台运行
./apollo-broker run &
如果想要修改mqtt连接的端口号,在mybroker/etc/apollo.xml这个文件中,mqtt是通过tcp连接的,所以只需要改连接tcp的端口号就行
Windows mqtt服务器搭建:
- 运行jdk1.8.0_20164.msi 下载链接
- 下载apache-apollo-1.7.1文件 下载链接(Windows版的) 我这里选择的是:
- 管理员身份运行cmd,进入到 apache-apollo-1.7.1/bin 中 执行命令:
apollo create myapollo C:\apache-apollo\broker
创建完之后c盘会出现apache-apollo这个文件夹
- 进入C:\apache-apollo\broker\bin目录下,执行如下命令:
apollo-broker run
- 打开http://127.0.0.1:61680/,用户名admin, 密码password 服务器就搭建好了 参考链接
Linux mqtt客户端创建:
mqtt客户端使用方法,下载 paho.mqtt.c-master源码,编译成动态库,直接调用动态库和头文件paho.mqtt.c-master依赖 OpenSSL库
- 先下载最新OpenSSL 下载链接
- 交叉编译:
- 在 install 目录中,会生成很多头文件和库
- 接下来再交叉编译 paho.mqtt.c下载地址
- 交叉编译(注意路径,编译器一定要选择自己的)
- 然后在build下的output下就能看到我们要使用的动态库了
- 使用: 源文件中加入 MQTTClient.h头文件,链接这三个动态库就可以创建MQTT客户端了参考链接
Windows mqtt客户端:
我直接使用的是mqtt客户端的一个小工具,非常好用下载链接
使用mqtt特别注意
MQTT掉线问题:
- 很有可能是连接时没有输入账号密码
- 网络问题
MQTT Client ID一定要唯一 MQTT的回调接受函数一定要返回1,不然可能会重复收到信息。
MQTT最重要的两个理念:QOS TOPIC QoS 0:“最多一次”,消息发布完全依赖底层 TCP/IP 网络。分发的消息可能丢失或重复。例如,这个等级可用于环境传感器数据,单次的数据丢失没关系,因为不久后还会有第二次发送。 QoS 1:“至少一次”,确保消息可以到达,但消息可能会重复。 QoS 2:“只有一次”,确保消息只到达一次。例如,这个等级可用在一个计费系统中,这里如果消息重复或丢失会导致不正确的收费。
TOPIC,只有订阅了这个topic,你才能收到关于这个topic的所有消息。 topic有两个常用的通配符 “+” 和 “#”
- "mode/+“如果订阅了这种topic,只是表示当前一层的。从当前的第二层就不行了。例如发送者发送"mode/op”,就可以收到。但是发送者发送"mode/op/type"就收不到了。
- "mode/#“如果订阅了这种topic,表示当前本身和下面子层所有。例如无论发送者发送"mode/op”,还是发送"mode/op/type"都可以收到信息。