最近同事在开发一款物联网硬件,需要将采集的数据传输到客户的MQTT服务器上,目前正处理调试阶段,连接到对方服务器测试很不方便,于是想要自己搭建一个MQTT测试服务器。在网上搜索了常用的MQTT 代理服务器 ,最终决定采用ActiveMQ Artemis,开始发现另一款国产的EMQX也还不错,下载后发现还要注册试用填一堆资料,果断放弃懒得折腾。
ActiveMQ介绍
Apache ActiveMQ 是一款基于 Java 的消息服务器,支持多种协议可以使用C,C ++,Python,.Net等进行连接。ActiveMQ 官网介绍目前提供2个版本下载,ActiveMQ 经典版和ActiveMQ Artemis,其中Artemis为下一代高性能,非阻塞架构,基于事件驱动的消息系统。
![MQTT测试服务器搭建](/wp-content/uploads/replace/37863224bc69225335634a1be206590d.jpeg)
ActiveMQ 经典版与Artemis对比
ActiveMQ Artemis 安装
为了测试方便我们将ActiveMQ Artemis部署在windows平台,我们在activemq官网下载apache-artemis-2.14.0-bin.zip ,目前最新版本为2.14.0 (July 20, 2020)。我们将下载的ZIP 压缩包 解压到D:apache-artemis-2.14.0-boker。创建创建一个broker实例,实例需要新建一个文件夹F:apache-artemis-2.14.0-boker,进入D:apache-artemis-2.14.0-boker bin 目录执行( artemis create D:apache-artemis-2.14.0-boker )创建broker实例,执行artemis create命令提示需要输入账号密码,按照提示输入即可。创建成功后,执行 artemis run 启动broker实例。实例启动成功后,我们可以使用创建实例时输入的的账号密码登入管理面板。
![MQTT测试服务器搭建](/wp-content/uploads/replace/cf1eb1a751d07375603b249fec525228.jpeg)
ActiveMQ Artemis 管理面板
ActiveMQ Artemis 配置
我们可以修改MQTT的默认端口,配置文件位置:实例文件夹etcbroker.xml
<!– MQTT Acceptor –>
<acceptor name=”mqtt”> tcp ://0.0.0.0:1883我们将1883修改为我们需要的端口即可
修改管理面板WEB端口,配置文件位置:安装目录etcbootstrap.xml <web bind=” localhost :8161″ path=”web”> 默认端口8161修改为你想要的端口
MQTT客户端测试
我们使用通讯猫调试软件,订阅硬件发布的主题消息。
![](/wp-content/uploads/replace/1d4b3a28baafa9ae2c227e7ab3817367.jpeg)
MQTT测试客户端
同事说能否自己弄一个简单的MQTT客户端,实时解析订阅收到的消息。客户端程序的话,用 C#winform写很方便,手撸一个MQTT客户端代码(使用MQTTnet)分分钟搞定。
![](/wp-content/uploads/replace/eee15a47245e7eeedc06eed151baa2a2.jpeg)
.NET MQTT客户端