当前位置: 首页 > backend >正文

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

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

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

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

        <networkConnectors><!-- 连接到远程服务器 --><networkConnector uri="static://(tcp://112.2.10.28:61616)" duplex="true"  name="local-to-remote"/></networkConnectors>

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

2、配置线上activemq.xml

		<networkConnectors><!-- 连接到公司服务器 --><networkConnector uri="static://(tcp://0.tcp.ap.ngrok.io:13164)" duplex="true" name="remote-to-local"/></networkConnectors>

说明: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显示以下表示转发成功:

 

http://www.xdnf.cn/news/12227.html

相关文章:

  • 基于责任链模式进行订单参数的校验
  • Flink 高可用集群部署指南
  • NuxtJS入门指南:环境安装及报错解决
  • 【Redis】类型补充
  • Oracle-高频业务表的性能检查
  • Tailwind CSS 实战:基于 Kooboo 构建 AI 对话框页面(七):消息框交互功能添加
  • 复变函数中的对数函数及其MATLAB演示
  • 人脸识别技术成为时代需求,视频智能分析网关视频监控系统中AI算法的应用
  • 残月个人拟态主页
  • float和float32有什么区别
  • 《前端面试题:CSS的display属性》
  • IDEA 打开文件乱码
  • 每日算法-250605
  • React 第五十三节 Router中 useRouteError 的使用详解和案例分析
  • 使用深蓝词库软件导入自定义的词库到微软拼音输入法
  • 第四十五天打卡
  • OpenCV种的cv::Mat与Qt种的QImage类型相互转换
  • ES 学习总结一 基础内容
  • mac 电脑Pycharm ImportError: No module named pip
  • io多路复用的三种方式
  • Haproxy的基础配置
  • vue+element-ui一个页面有多个子组件组成。子组件里面有各种表单,实现点击enter实现跳转到下一个表单元素的功能。
  • 在 Oracle 中,创建不同类型索引的 SQL 语法
  • 一次Oracle的非正常关闭
  • java学习笔记——数组和二维数组
  • 驶向智能未来:车载 MCP 服务与边缘计算驱动的驾驶数据交互新体验
  • AI学习笔记二十九:YOLOV12部署测试
  • Golang——8、协程和管道
  • 更新Java的环境变量后VScode/cursor里面还是之前的环境变量
  • 【Go语言基础【5】】运算符基础