我有一个关于 Paho 订阅的问题,以及应用程序如何管理不同的主题(允许使用通配符)。我们之所以感兴趣,是因为我们提供了一个层来管理所有这些东西,以简化开发人员的生活,因此如果需要,我们以后可以在后台使用非 MQTT 发布/订阅。
一个例子可能是最好的解释方式。假设我们的程序中有两个独立的模块:
get_all_info()
短时间订阅主题fleet/vehicle-N/#
以获取特定车辆的所有信息N
。speed_mon()
fleet/+/speed
,仅对所有车辆的速度感兴趣,在程序期间订阅。
考虑序列(a):
speed_mon()
订阅fleet/+/speed
.get_all_info()
订阅fleet/vehicle-17/#
并获取信息。get_all_info()
取消订阅fleet/vehicle-17/#
。
第三次操作会影响第一次吗?换句话说,我们还会收到 topic 的消息fleet/vehicle-17/speed
吗?
如果取消订阅是对特定订阅的简单撤销,它将仅禁用在第二个要点中创建的订阅。
如果它使用过滤器禁用所有匹配的订阅(在通配符的意义上),它也会影响第一个订阅。
(a)现在忽略这样一个事实,即我们最好在程序期间订阅并且永远不要取消订阅,而只是将消息缓存到本地存储中get_all_info()
。fleet/#
这是一个人为的例子。我们无法控制客户如何使用我们的层。