mqtt - 在 MQTT 主题的关卡中使用通配符
问题描述
我想订阅多个 MQTT 主题,其中一个主题级别略有不同。例如:
sports/tennis/courtA
sports/tennis/courtB
sports/tennis/courtC
有没有办法使用单字符通配符?
在我所做的所有搜索中,我没有看到任何超出#
和的内容+
。我的理解是,不可能将这封信作为新的子级别(即sports/tennis/court/A
)发布。
我想要类似的东西sports/tennis/court*
,所以我看到了法庭主题,但在同一级别没有其他内容。
解决方案
不可以,您只能在子主题级别使用通配符。唯一受支持的通配符是#
和+
#
匹配 1 个或多个子主题,但不能在主题中间使用。egsports/tennis/#
是有效的,但sports/#/courtA
不是。
+
匹配单个子主题,并且可以放置在主题中的任何位置。例如+/tennis/courtA
和sports/+/courtA
都是有效的。
您可以做的是订阅一个范围比您想要的稍宽的通配符主题,然后在消息处理程序中再次过滤,因为所有消息处理程序回调都应该让您访问传入的消息主题。
例如,订阅sports/tennis/+
然后过滤掉在传递消息时匹配的任何其他内容。
编辑:对不起,我在问题中间错过了一点。
sports/tennis/courts/A
是一个完全有效的主题,sports/tennis/courts/B
并且会被匹配sports/tennis/courts/#
或匹配sports/tennis/courts/+
(理解第一个也匹配sports/tennis/courts/A/foo
第二个不匹配的地方)
推荐阅读
- google-cloud-platform - Terraform:Cloud Run 服务上的 Cloud Endpoints?
- spring-batch - 带有 Rest API 的 Spring Batch 启动/停止
- mysql - 尝试使用带有 sql like 关键字的准备好的语句但遇到问题
- database - 两张表对一张表作为关系
- php - 循环价格在 Woocommerce 存档中显示为不带小数
- javascript - 如何根据来自服务器端的信息添加 HTML div 元素?
- python - Python 3.7 builtins.NameError
- python - 如何在python中找到字符串中子字符串的出现次数?
- python - pytorch 可以优化顺序操作(如张量流图或 JAX 的 jit)吗?
- javascript - 将初始数据从服务器传递到 React 应用程序