文档中心
登录
注册
云原生消息引擎
文档指南
云原生消息引擎
云原生消息引擎
文档指南
请输入
产品动态
新功能发布记录
产品计费
计费说明
续费说明
欠费或到期说明
退订或变配费用说明
BMQ 实例用户指南
BMQ 简介
什么是 BMQ
应用场景
实例规格
名词解释
地域和可用区
消息队列|MQ
快速入门
创建 BMQ 资源
使用 Java SDK 收发消息
控制台指南
实例管理
实例生命周期管理
创建 BMQ 实例
查看 BMQ 实例详情
变更实例规格
删除 BMQ 实例
实例配置管理
切换子网和安全组
修改全局消息保留时长
实例连接管理
配置私网访问
配置公网解析
配置公网访问
Topic 管理
创建 Topic
扩容 Topic 分区数
预览 Topic 数据
查看 Topic 详情
修改消息保留时长
删除 Topic
Group管理
创建 Group
重置消费位点
查看 Group 详情
删除 Group
消息查询
消息查询
下载消息
SASL 用户管理
创建 SASL 用户
配置用户 All Permitted 功能
查看 SASL 用户密码
删除 SASL 用户
ACL 管理
创建 ACL
删除 ACL
监控告警
查看监控数据
配置告警策略
最佳实践
Topic 单分区流量监测
通过函数服务消费云原生消息引擎 BMQ
消费者最佳实践
SDK 参考
Java SDK
Go SDK
Python SDK
API 参考
开发前必读
API 概览
如何调用API
请求结构
公共参数
认证鉴权
返回结果
实例规格
ListSpecifications - 查询 BMQ 售卖规格列表
实例管理
CreateInstance - 创建实例
DeleteInstance - 删除实例
ModifyInstanceTag - 编辑实例标签
DescribeInstance - 查询实例详情
SearchInstances - 查询实例
UpdateInstanceMessageRetention - 修改实例消息保留时长
ListInstanceResourceStats - 查询多个实例资源
DescribeInstanceResourceStat - 查询单个实例资源
实例连接管理
EnableOverlayAccess - 开启私有网络访问
DisableOverlayAccess - 关闭私有网络访问
ModifyOverlayAccess - 修改私有网络
ListAvailableVPCForBMQ - 查询可用 VPC 列表
ListAvailableSecurityGroupsForBMQ - 查询可用安全组列表
EnablePublicAccess - 开启公网访问
DisablePublicAccess - 关闭公网访问
ListAvailableVPCForBMQ - 获取对 BMQ 可用的 VPC 列表
ListAvailableSubnetsForBMQ - 获取对 BMQ 可用的子网列表
DescribeAvailableZones - 区域可用区列表
ListAvailableSecurityGroupsForBMQ - 获取对 BMQ 可用的安全组列表
Topic 管理
CreateTopic - 创建 Topic
DeleteTopic - 删除 Topic
ScaleUpTopic - 扩容 Topic 分区数量
DescribeTopic - 查询 Topic 详情
SearchTopics - 查询 Topic
DescribePartitionsInTopic - 查询 Topic 分区
DescribeGroupsInTopic - 查询订阅消费组列表
UpdateTopicMessageRetention - 修改 Topic 消息保留时长
PreviewTopicData - 预览 Topic 数据
DescribeTopicTimeRange - 查询 Topic 消息生产时间范围
TopicExist - 判断 Topic 是否存在
Group 管理
CreateGroup - 创建消费组
DeleteGroup - 删除消费组
GroupExist - 判断消费组是否存在
DescribeGroup - 查询消费组详情
SearchGroups - 查询消费组列表
DescribeTopicsInGroup - 查询订阅 Topic 列表
DescribeSubscription - 查询订阅分区列表
ResetSubscriptionOffset - 重置消费位点
BMQ 常见问题
MQTT 实例用户指南
MQTT 简介
什么是云原生消息引擎MQTT版
功能特性
名词解释
MQTT 扩容及升级风险须知
消息队列|MQ
控制台指南
MQTT 实例管理
创建 MQTT 实例
查看 MQTT 实例信息
扩容 MQTT 实例
删除 MQTT 实例
监听器管理
添加公网监听器
添加私网监听器
删除监听器
用户管理
创建用户
编辑用户
修改用户密码
删除用户
API 密钥管理
创建 API 密钥
启停 API 密钥
编辑 API 密钥
删除 API 密钥
MQTT Agent
MQTT Agent 概述
使用 MQTT Agent
API 参考
MQTT监听器
CreateDashboardEndpoint - 新建 dashboard 访问接入点
DeleteDashboardEndpoint - 删除 dashboard 访问接入点
MQTT密钥
UnRegisterDeviceCredential - 删除 MQTT 用户设备访问凭证
RefreshDeviceCredential - 更新 MQTT 用户设备访问凭证
DescribeDeviceCredential - 查询 MQTT 用户设备访问凭证
RegisterDeviceCredential - 注册 MQTT 用户设备访问凭证
MQTT公共API
DescribeMQTTClients - 查询 EMQX 客户端连接信息列表
Dashboard指南
登录 Dashboard
监控
集群概览
客户端
订阅管理
保留消息
延迟发布
访问控制
客户端认证
客户端认证概述
创建客户端认证
创建 Password-Based 认证
创建 JWT 认证
创建 SCRAM 认证
管理客户端认证
用户管理
查看认证概览
客户端授权
客户端授权概述
创建客户端授权
管理客户端授权
配置内置数据库授权规则
查看授权概览
配置授权
黑名单
创建黑名单
删除黑名单
连接抖动
配置连接抖动
集成
Flow 设计器
创建 Flow
查看 Flow
规则
创建规则
管理规则
查看规则
连接器
创建连接器
管理连接器
管理
集群配置
MQTT 配置
日志
监控
MQTT 高级特性
主题重写
自动订阅
延迟发布
问题分析
主题监控
慢订阅
日志追踪
系统设置
审计日志
备份与恢复
最佳实践
快速构建第一个 MQTT 连接
MQTTX CLI测试 EMQX
eMQTT-Bench 测试 EMQX
通过自动订阅实现 p2p 指令发布
设备状态汇报到 Kafka
导出 OpenTelemetry 数据
使用 RestAPI 修改集群状态
Proxy Protocol 协议透传
实时获取主题下丢弃的消息条数
遗嘱消息获取设备异常下线
从 EMQX v5 迁移到 MQTT 云服务
MQTT 集成 Trace 到 TLS
相关协议
云原生消息引擎(BMQ)服务等级协议
文档首页
云原生消息引擎
MQTT 实例用户指南
最佳实践
通过自动订阅实现 p2p 指令发布
复制全文
下载 pdf
我的收藏
最佳实践
通过自动订阅实现 p2p 指令发布
复制全文
下载 pdf
我的收藏
通过自动订阅实现 p2p 指令发布
文档反馈
问问助手
MQTT 设备在出厂时通常仅指定 MQTT 服务器的接入地址,但没有指定其所订阅的 MQTT Topic。云上的控制服务(通常是 Java/Go/C++)希望通过根据指定的设备 ID 来实现指令的下发。如某个 Java 实现的后端服务希望向 clientid 为 vin001 的 MQTT 设备下发消息,但 vin001 的设备仅建立了 MQTT 连接,并未主动订阅任何 MQTT Topic。该场景可以借助 MQ + MQTT 组合方案搭配 MQTT 自动订阅,实现类似于 “P2P” (点对点)的通信方式。
架构说明
准备工作
创建消息队列 Kafka 版实例,并创建一个名称为 restart
的
Topic。详细操作请参见
创建实例
和
创建 Topic
。
消息队列 Kafka 版中配置 Kafka 用户,其对 restart Topic 有读写权限。详细操作请参见
创建 SASL 用户
和
创建 ACL
。
测试用户:名称 root,密码 ******。
MQTT Dashboard 中完成用户认证和授权相关配置,参考
快速构建第一个 MQTT 连接
。
测试用户:名称 user,密码 123456。
确保消息队列 Kafka 版和云原生消息引擎 MQTT 版在同一个 VPC 中。
操作步骤
创建 Kafka 消费者连接器,为 EMQX 配置 Kafka 消费者订阅。
详细操作请参见
创建连接器
。
选择连接器类型为
Kafka消费者。
填写 Kafka VPC 接入点、认证、认证方法、用户名、密码。
配置转发规则。
详细操作请参见
创建规则
。
在界面右侧单击
数据输入
,然后单击
编辑
。
将数据输入配置为 Kafka消费者。
输入类型选择
Kafka 消费者
。
配置所指定的 Kafka 消费者连接器。
声明该规则所订阅的 Kafka 主题名称为
restart
。
选择 Key 和 Value 编码模式
示例中为 Base64 和 None,可根据实际情况修改。如修改编码模式,后续规则 SQL 语句相应字段的处理函数也需要同步修改。
单击
动作输出
,然后单击
添加动作,
配置动作输出。
动作类型选择
消息重发布。
声明该规则所订阅的主题名称为
/restart/${key}
。
指定订阅 Kafka Topic 数据后,经过 EMQX 处理转发的 MQTT Topic 为动态 Topic,其来自 Kafka 消息 Key。Java 后端服务发送消息到 Kafka 时 clientid 被有意的设置为消息 key,其被 EMQX 规则处理为 /restart/key。设备自动订阅其 /restart/vin 的 MQTT Topic,消息 key 与 clientid 相同,如均为 vin001,即完成消息与设备的订阅绑定。
设置 MQTT payload 为
{aim}
字段。
编辑规则 SQL。
将 json 格式消息 value 中的 aim 字段作为新的 aim 字段(根据上文的规则,其被传递到 payload 中)。
From 字段在配置数据输入为 kafka 消费者时,其 SQL 语句会自动配置,无需手动修改。
SQL
复制
SELECT
value.aim
as
aim,
-- payload 配置为 {aim}
base64_decode(key)
as
key
-- payload中未包含此字段,故不会在本例子中实际传递
FROM
"$bridges/kafka_consumer:kafka"
-- 该字段为系统自动更新
消息验证。
通过消息队列 Kafka 控制台的消息发送功能向 Kafka restart Topic 中发送数据。
其可以被正确的转发到连接的 vin001 设备,即代表验证成功。
最近更新时间:2025.08.04 17:30:05
这个页面对您有帮助吗?
有用
有用
无用
无用