mqtt - 如果没有订阅者,MQTT客户端是否必须发布到主题?

标签 mqtt

在MQTT和pub/sub的上下文中,假设我的嵌入式微 Controller IOT设备具有大量变量(即各种传感器,值,设置,输出等),这些变量可以映射到“主题”。

如果没有主题订阅者,是否真的有必要针对主题发布(给经纪人)?
我想以为我对MQTT有相当不错的了解,但是当我考虑通过该设备的实现时,这个问题突然出现了。对于该设备而言,总是在所有主题上发布都是很重要的。

通常,在这种情况下,订户将对一小部分主题感兴趣,而不是全部。如果只订阅一小部分子集,则似乎不必在所有主题上进行发布。为什么不只发布订阅的主题?

MQTT订阅者客户端通常连接到代理,然后将其订阅消息发送到代理。我没有看到一种机制,订阅者可以通过该机制向发布者指示他们感兴趣的主题,从而仅允许发布者发布必要的主题。

我是不是误解了MQTT的细微差别,或更普遍地说是pub/sub?

最佳答案

发布者不知道任何主题有多少个订阅者。

发布/订阅体系结构的部分要点是使发布者与订阅者完全脱钩,这全部由代理处理。是的,这可能导致发布的内容没有人在听,但是这简化了发布者。

同样,在使用诸如保留主题和持久 session 之类的内容时,仅因为订阅服务器当前未连接,也不意味着消息不会在以后发送。

关于mqtt - 如果没有订阅者,MQTT客户端是否必须发布到主题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32431489/

相关文章:

ssl - Mosquitto 与 MQTTS 和 WSS 在同一个代理中

flutter - 在flutter中使用Google Cloud pub sub实现MQTT

c - MQTT over SSL 与 PAHO C

xmpp - 适合即时通讯的协议(protocol)

java - 使用 Paho Java 库处理 MQTT 消息的最佳实践

python - 客户端脱机时VerneMQ单个发布消息丢失

node.js - Node js setinterval 在连接时无法与 mqtt 客户端一起使用

raspberry-pi - Mosquitto 2.0 配置在 Raspberry Pi 上仍然无法工作

ios - 保持 iOS 应用程序处于事件状态以使用 MQTT 协议(protocol)

c# - ServiceClient (Microsoft.Azure.Devices) OpenAsync 问题