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