1、实验环境
MQTT 服务器:Apache Apollo
版本:apache-apollo-1.7.1-windows-distro.zip
官网:http://activemq.apache.org/apollo/download.html
操作系统:Win10,JDK 版本如下
2、MQTT 服务器端安装过程运行截图
1) 在搭建 Apollo 服务器之前,需先在系统中安装好 jdk,并配置环境变量。
因之前使用过 JAVA 已配置,这里不再给出步骤,Java –version 测试是否
配置成功。
2) 下载解压 apache-apollo-1.7.1-unix-distro.tar.gz
3) bin 目录下启动[1]apollo.cmd,输入指令:apollo create mybroker 新建一个
broker 实例,mybroker 名字任意取,创建成功的提示如下图所示:
4) 新建的 broker 实例会在当前目录下生成一个 mybroker 目录,包含下图文件:
其中 etc\apollo.xml 文件下是配置服务器信息的文件;etc\black-list.txt 用来存
放不允许连接服务器的 IP 地址,相当于黑名单类似的东西。
etc\users.properties 文件用于设置连接 MQTT 服务器时用到的用户名和密码,格
式:用户名=密码,原本为:admin=password 则在下面新增一列 test 用户:
test=test。并在 groups.properties 中修改 admins=admin 为 admins=admin|test(中
间用|分开)
1 启动 apollo.cmd 闪退请移步问题 1
5) 进入\apache-apollo-1.7.1\bin\mybroke\bin 目录,启动 apollo-broker.cmd,执
行如下命令:apollo-broker run,可以使用 TAB 键自动补全再输入 run,
运行后输出信息如下[2]:
6) 启动服务:./bin/apollo-broker-service start,会打开一个黑窗口之后自动退
出,最后如下图:
7) apollo 提供了可视化 web 界面,在浏览器中输入 http://127.0.0.1:61680/(http
访问)或者 https://127.0.0.1:61681/ (https 访问,可用于研究 mqtt+ssl)输入用
户名密码即可登录(默认用户名:admin 密码:password)[3]
2 run 出现错误:java.net.BindException: Address already in use:bin 请移步问题 2
3 登录后使用过程中,连接不上,同为问题 2
登录成功之后的控制台页面及当前连接状态如下图所示:
8) 服务器主配置文件 bin\mybroker\etc\apollo.xml 的说明:
该配置文件用于控制打开的端口,队列,安全,虚拟主机设置等。
a) 认证:可以使用
来配置是否需要连接
认证,如果将其属性 enable 设置为 false 表示不用认证,任何人都可以连
接服务器,默认为 true。
b) access_rule:可以在 broker 或者 virtual_host 中用于定义用户对服务器资
源的各种行为。如下图表示群组 users 里面的用户可以对服务器资源进行
的操作有:connect 、create、 destroy、 send 、receive 、consume。
c) 用于配置服务器支持的链接协议以及相应的端口。
如 id="tcp"一句,表示支持 tcp 链接,使用的端口是 61613,链接限制是
2000,自动侦听的协议是 mqtt 协议。
9) 修改对外 IP,打开远程 Web:
若非本机安装,修改 bin/mybroker/etc/ apollo.xml 文件中 web_admin 的 ip
地址为 0.0.0.0,不绑定回送地址 127.0.0.1,以便访问控制台。
改为:
10) 改为免认证
默认连接必须要用户名密码,改为免认证。
可以直接在 apollo 可视化 Web 界面改(测试 3-(1)中),如图,这两处取消注
释就可以测试的时候连接上了。修改后保存会重新载入配置文件,这其实是把链
接用户的授权认证的关闭了,所以就不用密钥认证就能进。
3、测试工具链接 MQTT 服务器
下面提供两个方法的测试:
1) apollo 除了提供了可视化 Web 界面外,还提供了测试 demo
打开页面如下:
点击 Connect 连接后,可以去 Apollo 监控页面(http://127.0.0.1:61680/ (http
访问)或者 https://127.0.0.1:61681/ (https 访问,可用于研究 mqtt+ssl))查看,会发
现有你连接的主题和消费者:
2) MQTTLens/MQTTBOX,两者步骤一样;可以安装相应的程序到系统中,
也 可 以 使 用 Google Chrome 的 扩 展 应 用 , 下 面 给 出 我 采 用 的 客户 端
MQTTBOX 的测试:
a) 下载安装:http://workswithweb.com/mqttbox.html(需翻墙)
GitHub 地址:https://github.com/workswithweb/MQTTBox
b) Google 搜索 MQTTLens,进入 chrome 网上应用店,点击扩展程序。打
开安装好的应用程序如下图所示:
建立 MQTT 连接,点击“Create MQTT Client”, 指定连接相关信息,包括连
接名称(可以随意输入)、协议(选择 mqtt/tcp)和主机地址(安装在本地,MQTT
缺省端口为 61613,所以输入 127.0.0.1:61613),然后单击“Save”保存。连接中一
些别的选项先保持缺省值,配置如下:
保存成功后进入如下的界面,接下来可以开始测试消息发布和订阅。如下图
所示,绿色“Connected”按钮表明当前 MQTT 连接已经成功。
首先开启一个订阅,如下图所示。“Topic to subscribe”里填入要订阅的
主题“testClient”;“QoS”字段选择“0 - Almost Once”;然后点击“Subscribe”
按钮。
设置好订阅的主题后,在发布这边输入如下的信息。“Topic to publish”
中输入“testClient”,这里输入的主题的名字必须和订阅那里的输入相同;
“QoS”中选择“0 - Almost Once”;“Payload”中输入任何内容都可以;所有
内容输入完毕之后,点击“Publish”按钮