如何实现本地mqtt服务器和云端服务器同步? - 指南

 有时候,一个物联网项目,A客户想要本地使用,B客户想要线上使用,C客户想要本地部署,当有网环境时能线上使用。这个时候就需要本地MQTT服务和线上MQTT服务能相互自动转发。

后来经我一翻研究,其实Activemq支持配置activemq.xml来实现两个broker(mqtt服务)的转发。但是线上服务器配置activemq.xml时,需要提供一个内网固定IP,但是一般用户网络没有固定IP,这种情况下,就可以再加一个利器ngrok,可以将内网TCP或HTTP协议及端口穿透,实现反向代理。

以下是实现步骤:
1、配置本地activemq.xml(在broker节点里加)

 说明:地址112.2.10.28.61616是线上服务器地址,注意需配置服务器防火墙,开放此端口)

2、配置线上activemq.xml

说明:tcp://0.tcp.ap.ngrok.io:13164是通过ngrok生成的外部访问地址(下文会说到获取方法),13164端口同样需要配置服务器打开此端口。

3、安装和启动ngrok,实现内网穿透

(1)申请ngrok账号

        官网: https://www.ngrok.com


(2)本地电脑安装ngrok(以下是mac os示例,其它系统可参考官方文档,很简单):

brew install ngrok

(3)配置ngrok的token(token可在用户管理中获得): 

ngrok config add-authtoken 2VsdP4736wyq5I321VdL126hqRzf_38BHTUJvd2LGdfm4cm7X

(4)启动代理

ngrok tcp 192.168.110.168:61616

(5)启动后显示以下结果表示成功,得到一个TCP协议的外网地址,当访问这个ngrok地址时,就相当于访问本地192.168.110.168中61616这个地址了。

4、 线上activemq.xml和本地activemq.xml都配置完成后,重启两个activemq服务就可以。可以直接关掉activemq客户端,或是重启activemq服务。

5、actiemq显示以下表示转发成功:

 

posted @ 2025-07-23 19:34  wzzkaifa  阅读(49)  评论(0)    收藏  举报