前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >桥接 Mosquitto MQTT 消息至 EMQX

桥接 Mosquitto MQTT 消息至 EMQX

原创
作者头像
EMQ映云科技
发布于 2022-09-13 02:04:34
发布于 2022-09-13 02:04:34
1.3K02
代码可运行
举报
文章被收录于专栏:EMQ 物联网EMQ 物联网
运行总次数:2
代码可运行

Mosquitto 是一个小型轻量的开源 MQTT 服务器,由 C/C++ 语言编写,采用单核心单线程架构,支持部署在资源有限的嵌入式设备,接入少量 MQTT 设备终端,并实现了 MQTT 5.0 和 3.1.1版本协议。Mosquitto 完整支持了 MQTT 协议 特性,但基础功能上 Mosquitto 集群功能羸弱,官方和第三方实现的集群方案均难以支撑物联网大规模海量连接的性能需求。

因此 Mosquitto 并不适合用来做规模化服务的 MQTT 服务器,但由于其足够轻量精简,可以运行在任何低功率单片机包括嵌入式传感器、手机设备、嵌入式微处理器上,是物联网边缘消息接入较好的技术选型之一,结合其桥接功能可以实现消息的本地处理与云端透传。

EMQX 是一款大规模分布式物联网 MQTT 消息服务器,可以高效可靠连接海量物联网设备,实时处理分发消息与事件流数据。EMQX 节点可以被其他类型的 MQTT 服务器MQTT 云服务桥接,实现跨平台的消息订阅和发送。本文我们将以一个配置实例来演示如何桥接 Mosquitto MQTT 消息至 EMQX。

场景描述

假设我们有一个 EMQX 服务器集群 emqx1,和一台 Mosquitto 服务器,我们需要在 Mosquitto 上创建一条桥接,把所有传感器主题 sensor/# 消息转发至 emqx1 集群,并从 EMQX 订阅所有控制主题 control/#

EMQX

得益于 EMQX 标准的 MQTT 协议支持,Mosquitto 可以桥接至任意版本的 EMQX,此处使用 EMQX Cloud 提供的 免费的在线 MQTT 服务器 进行测试:

Mosquitto

本文使用的 Mosquitto 版本为 2.0.14,下载安装方式详见 Mosquitto Download

简单的 Mosquitto MQTT 桥接示例

配置 Mosquitto 的桥接需要在安装后修改 mosquitto.conf 文件,对于每一个桥接,需要配置的基本内容有:

  • 远端的 EMQX 服务器的地址和端口
  • MQTT 协议参数,如协议版本,keepalive, clean_session等(如不配置则使用默认值)
  • EMQX 需要的客户端登录信息
  • 需要桥接的消息的主题
  • 配置桥接主题映射(默认无映射)

以下是最终的配置文件,下文会详细讲解每个部分配置的释义:

代码语言:text
AI代码解释
复制
connection emqx1
address broker.emqx.io:1883
bridge_protocol_version mqttv50
remote_clientid emqx_c
remote_username emqx_u
remote_password public
topic sensor/# out 1
topic control/# in 1
新建 MQTT 桥接

打开 mosquitto.conf 文件,在配置文件末尾增加一个 MQTT 桥接配置,使用 emqx1 作为 connection 名称:

代码语言:text
AI代码解释
复制
connection emqx1
配置桥接远端节点的地址和端口
代码语言:css
AI代码解释
复制
address broker.emqx.io:1883
配置 MQTT 协议版本

Mosquitto 桥接使用的 MQTT 协议版本默认为 3.1.1,EMQX 完整支持 MQTT 5.0 特性,此处使用 MQTT 5.0 版本进行桥接:

代码语言:text
AI代码解释
复制
bridge_protocol_version mqttv50
配置远端节点客户端 ID
代码语言:text
AI代码解释
复制
remote_clientid emqx_c
配置远端节点用户名
代码语言:text
AI代码解释
复制
remote_username emqx_u
配置远端节点密码
代码语言:text
AI代码解释
复制
remote_password public
指定需要桥接的 MQTT 主题

桥接主题的配置格式为 topic <topic> [[[out | in | both] qos-level] local-prefix remote-prefix],它定义了桥接转发和接收的规则,其中:

  • <topic>指定了需要桥接的主题,支持通配符
  • 方向可以是 out, in 或者 both
    • out: 将本地主题数据发送到远端 Broker
    • in: 订阅远端 Broker 的主题,将数据发布到本地
    • both: 在同一个主题上进行双向桥接
  • qos-level为桥接的 QoS 级别, 如不指定则使用被转发消息原 QoS
  • local-prefixremote-prefix 对应本地和远程前缀,用于主题映射时在转发和接收的消息主题上加上相应前缀,以便应用可以识别消息来源。

对应本文场景可以添加以下两条桥接规则:

代码语言:text
AI代码解释
复制
topic sensor/# out 1
topic control/# in 1

在配置完成后,需要重新启动 Mosquitto 使 MQTT 桥接配置生效。

配置 EMQX 服务器

使用公共服务器时不需要配置任何参数。实际应用中,为了使 Mosquitto MQTT 消息桥接成功,需要视用户 EMQX 的安全配置情况决定是否配置相应的客户端认证授权信息。

测试配置

我们可以使用 MQTT 客户端工具来测试 MQTT 桥接的配置是否成功,此处使用的是 MQTT X CLI,一款由 EMQ 开发的强大而易用的 MQTT 5.0 命令行工具。

测试桥接的 out 方向

在远程 EMQX 上订阅 sensor/#主题,等待接收 Mosquitto 桥接上报的数据:

代码语言:lua
AI代码解释
复制
mqttx sub -t "sensor/#" -h broker.emqx.io

在本地 Mosquitto 的 sensor/1/temperature 主题上发布消息,该消息将在 Mosquitto 中发布,同时桥接至远程 EMQX:

代码语言:text
AI代码解释
复制
mqttx pub -t "sensor/1/temperature" -m "37.5" -q 1

此时远程 EMQX 应当能收到 Mosquitto 桥接上报的消息:

代码语言:text
AI代码解释
复制
payload:  37.5

测试桥接的 in 方向

在本地 Mosquitto上订阅 control/# 主题,该主题将接收到远程 EMQX 上发布的消息:

代码语言:text
AI代码解释
复制
mqttx sub -t "control/#"

在远程 EMQX 的 control/t/1 主题上发布消息,消息将在 EMQX 集群中传递,同时桥接到 Mosquitto 本地:

代码语言:css
AI代码解释
复制
mqttx pub -t "control/t/1" -m "I'm EMQX" -h broker.emqx.io

此时在 Mosquitto 上应能收到该消息:

代码语言:text
AI代码解释
复制
payload:  I'm EMQX

除了 Mosquitto 外,由 EMQ 开源的超轻量级 MQTT 消息服务器 NanoMQ 同样适用于物联网边缘接入场景,我们将在后续的文章中带来桥接 NanoMQ 消息至 EMQX 的教程。

版权声明: 本文为 EMQ 原创,转载请注明出处。

原文链接:https://www.emqx.com/zh/blog/bridging-mosquitto-to-emqx-cluster

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
实时车辆行人多目标检测与跟踪系统-上篇(UI界面清新版,Python代码)
摘要:本文详细介绍如何利用深度学习中的YOLO及SORT算法实现车辆、行人等多目标的实时检测和跟踪,并利用PyQt5设计了清新简约的系统UI界面,在界面中既可选择自己的视频、图片文件进行检测跟踪,也可以通过电脑自带的摄像头进行实时处理,可选择训练好的YOLO v3/v4等模型参数。该系统界面优美、检测精度高,功能强大,设计有多目标实时检测、跟踪、计数功能,可自由选择感兴趣的跟踪目标。博文提供了完整的Python程序代码和使用教程,适合新入门的朋友参考,完整代码资源文件请转至文末的下载链接。本博文目录如下:
全栈程序员站长
2022/11/04
1.6K0
实时车辆行人多目标检测与跟踪系统-上篇(UI界面清新版,Python代码)
Python实现高级电影特效
前几天写了个实现特效的博客,感觉有点差强人意,只是简简单单的换背景应用场景不是非常多,今天就来实现一个更加复杂的特效“影分身”。下面有请我们本场的主演,坤制作人为我们表演他拿手的鸡你太美。
ZackSock
2020/05/18
1.5K0
Python实现高级电影特效
多模态RAG应用之实现文本检索视频内容
现如今无论是谷歌百度搜索知识学习,还是淘宝京东购物都离不开文字关键词的搜索。但现在很多平台或者应用有大量的视频,还有某些跟视频打交道的应用比如视频编辑器,视频自动化处理工具等,这些工具如果只有简单的文本搜索就远远不够用了,搜索体验肯定会大打折扣;由此引出我们今天的主题:
郑子铭
2025/01/07
2260
多模态RAG应用之实现文本检索视频内容
【AI视频】Runway:Gen-2 运镜详解
【AI视频】Runway Gen-2与Gen-3:文本生视频详解 qq2890091630.blog.csdn.net
CSDN-Z
2024/10/17
4180
【AI视频】Runway:Gen-2 运镜详解
Python实现5毛钱特效
Python牛已经不是一天两天的事了,但是我开始也没想到,Python能这么牛。前段时间接触了一个批量抠图的模型库,而后在一些视频中找到灵感,觉得应该可以通过抠图的方式,给视频换一个不同的场景,于是就有了今天的文章。
ZackSock
2020/04/16
1K0
5 分钟实现「视频检索」:基于内容理解,无需任何标签
「视频检索」任务就是输入一段文本,检索出最符合文本描述的视频。随着各类视频平台的兴起和火爆,网络上视频的数量呈现井喷式增长,「视频检索」成为人们高效查找视频的一项新需求。
Zilliz RDS
2023/01/10
4.7K0
5 分钟实现「视频检索」:基于内容理解,无需任何标签
如何用GPT-4o解读视频
  OpenAI在去年推出的GPT-4V已经支持了多模态识别,但一直仅限于图片输入,不支持视频。相比之下,Google的Gemini早已支持视频识别。最近,我司业务场景中出现了一个需要识别视频的需求,而我们只采购了GPT-4o模型。这就引发了一个问题:如何使用GPT-4o完成对视频的处理?
xindoo
2024/11/18
5820
如何用GPT-4o解读视频
打破次元壁,让游戏角色在指尖跳舞,简易的 AR 教程
作为一个天涯明月刀游戏的端游老玩家,天刀的画质是没的说的。玩天刀的七年,我唯一最大的收获就是拐了女朋友回家。至此,双十一来临之际,我紧急把之前想写的教程赶了出来。为了让单身的少侠可以在现实世界有自己游戏角色的陪伴,不再那么孤单,我可真是操碎了心,半夜把网页赶了出来。其实单身和非单身的双十一区别不是很大,只是吃土的方式不一样罢了。话不多说,我们先来看下效果:
桑榆肖物
2022/11/18
9740
打破次元壁,让游戏角色在指尖跳舞,简易的 AR 教程
音视频开发之旅(72)- AI数字人-照片说话之SadTalker
AI数字人目前做的最好的无疑是heygen,但是费用也是很贵,也有一些其他的商业应用,比如:微软小冰、腾讯智影、万兴播爆和硅基智能等。
音视频开发之旅
2024/03/02
6860
使用Pytorch和OpenCV实现视频人脸替换
“DeepFaceLab”项目已经发布了很长时间了,作为研究的目的,本文将介绍他的原理,并使用Pytorch和OpenCV创建一个简化版本。
deephub
2023/08/30
6400
使用Pytorch和OpenCV实现视频人脸替换
【AI视频】Runway:Gen-2 图文生视频与运动模式详解
Runway的图加文生成视频模式和运动模式为创作者提供了极大的创作灵活性。通过结合静态图片和文本提示,用户能够快速生成高质量的动态视频。同时,运动模式(Motion)允许根据不同的需求调整视频的动态效果,从轻微的细节移动到剧烈的场景变化都有所覆盖。这种工具不仅简化了复杂视频的制作流程,还大幅提升了创作效率,极大地拓宽了视频内容创作的可能性,为创作者提供了前所未有的便利和创意空间。
CSDN-Z
2024/10/17
8470
【AI视频】Runway:Gen-2 图文生视频与运动模式详解
python带你剪辑视频
嗯,好久没写文章了。因为最近没有熬夜了,天天背电脑也很辛苦。 工作嘛,手工为主,没有啥技术成长,也没啥好写的。 疫情期间,总听到有人叹气,总听到抖音里面“我太难了”。
赵云龙龙
2020/08/13
3K0
多模态AI的未来:从文本到视频的智能融合
随着人工智能技术的迅猛发展,多模态AI正逐渐成为研究和应用的热点。多模态AI通过融合文本、图像、音频和视频等多种数据模态,能够更全面地理解和生成信息,为各行各业带来新的机遇。本文将深入探讨多模态AI的未来发展方向,特别是从文本到视频的智能融合,并通过详细代码实例展示其技术实现。
江南清风起
2025/03/24
2550
短视频篇 | Python 带你进行短视频二次创作
无论是抖音还是快手等视频平台,一旦一个视频火了后,很多 UP 主都会争先抢后去模仿拍摄或剪辑,然后上传到平台,最后都能带来不错的流量。
AirPython
2020/03/23
1.7K0
短视频篇 | Python  带你进行短视频二次创作
飞桨PaddleHub带你环游世界,快来试试Python一键视频抠图吧
在视频创作过程中,有时会遇到人像抠图的需求,最一般的做法是使用PR、AE等工具将视频中的每一帧图像手动抠图。这么繁琐的步骤在理工男面前简直是不可存在的,那么有什么简单的方法能快速抠图吗?当然有啦,接下来给大家介绍如何使用PaddleHub一键视频人像抠图。
用户1386409
2020/04/22
1.8K0
基于aidlux的ai模型边缘设备模型部署实战(3.图像分类)
之前的内容我们成功调用了摄像头并调用opencv库函数,实现手机摄像头的是实时边缘检测,使用canny边缘检测提取图像边缘特征,当然还能实现更为复杂的函数功能。
用户10689547
2023/08/07
3280
使用 Docker 和 Diffusers 快速上手 Stable Video Diffusion 图生视频大模型
本篇文章聊聊,如何快速上手 Stable Video Diffusion (SVD) 图生视频大模型。
soulteary
2024/01/09
9550
使用 Docker 和 Diffusers 快速上手 Stable Video Diffusion 图生视频大模型
给大模型制作图文并茂的教科书: 从2.5年的教学视频里挖掘多模态语料
近期关于 scaling law 的讨论甚嚣尘上,很多观点认为 scale law is dead. 然而,我们认为,高质量的 “无监督” 数据才是 scaling law 的关键,尤其是教科书级别的高质量的知识语料。此外,尽管传统的语料快枯竭了,但是互联网上还有海量的视频并没有被利用起来,它们囊括了丰富的多种模态的知识,可以帮助 VLMs 更好好地理解世界。
机器之心
2025/02/03
1530
给大模型制作图文并茂的教科书:  从2.5年的教学视频里挖掘多模态语料
视频数据处理方法!关于开源软件FFmpeg视频抽帧的学习
视频文件是多媒体数据中比较常见的一种,也是入门门槛比较高的一个领域。视频数据相关的领域任务包括视频物体检测、视频物体追踪、视频分类、视频检索和视频摘要抽取等。
Datawhale
2019/10/23
4.1K0
视频数据处理方法!关于开源软件FFmpeg视频抽帧的学习
tf27: Deep Dream—应用到视频
本文介绍了如何将Deep Dream技术应用于视频上,通过使用TensorFlow和Python实现Deep Dream算法,从而对视频进行逐帧处理,产生具有梦幻效果的视频。同时,也介绍了一些相关的工具和库,如ffmpeg、numpy、scipy、scikit-learn等,这些工具可以帮助我们更好地实现Deep Dream算法。此外,还介绍了一些Deep Dream算法的应用,如图像风格转换、图像修复、图像超分辨率等。最后,也介绍了一些实现Deep Dream算法的技巧和最佳实践,如调整网络结构、选择合适的预训练模型、使用预训练权重等。通过本文的学习,我们可以更好地理解Deep Dream算法,并能够将其应用于实际的视频处理任务中。"
MachineLP
2018/01/09
6650
推荐阅读
相关推荐
实时车辆行人多目标检测与跟踪系统-上篇(UI界面清新版,Python代码)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验