MQTT 如何处理发布者同时发布到同一主题的问题?
How does MQTT handle publishers simultaneously publishing to the same topic at the same time?
假设我有 3 个发布商,A、B 和 C。
- 发布者 A 将消息 FOO、BAZ、SOMETHING 发送到 SOME/TOPIC
- 发布者 B 发送消息 FOO, SOMETHING 到 SOME/TOPIC
- 发布者 C 没有向 SOME/TOPIC
发送消息
SOME/TOPIC 的订阅者会收到什么消息?
我想知道这一点的动机是发布者 A、B 和 C 从不可靠的数据源中提取这些消息,他们可能会错过一些消息,所以我有多个发布者发布到同一个主题形式的冗余。这是好主意还是坏主意?
订阅者会看到来自 A 和 B 的所有消息,它们传递给订阅者的顺序取决于它们到达代理的顺序(这将归结为它们通常通过网络到达的顺序) 以及在某种程度上如何实现代理。
MQTT 代理规范没有提及如何处理多个相同的消息,因此会将它们视为任何其他消息,除非您选择创建自定义代理来执行不同的操作。
我们无法回答这是否是个好主意,因为我们不知道订阅者收到多个相同消息(例如多个 FOO 和 SOMETHING 消息)的后果,因为消息在传递时将不包含有关哪个客户端发布它的任何信息(除非您选择在有效负载中对其进行编码)。
假设我有 3 个发布商,A、B 和 C。
- 发布者 A 将消息 FOO、BAZ、SOMETHING 发送到 SOME/TOPIC
- 发布者 B 发送消息 FOO, SOMETHING 到 SOME/TOPIC
- 发布者 C 没有向 SOME/TOPIC 发送消息
SOME/TOPIC 的订阅者会收到什么消息?
我想知道这一点的动机是发布者 A、B 和 C 从不可靠的数据源中提取这些消息,他们可能会错过一些消息,所以我有多个发布者发布到同一个主题形式的冗余。这是好主意还是坏主意?
订阅者会看到来自 A 和 B 的所有消息,它们传递给订阅者的顺序取决于它们到达代理的顺序(这将归结为它们通常通过网络到达的顺序) 以及在某种程度上如何实现代理。
MQTT 代理规范没有提及如何处理多个相同的消息,因此会将它们视为任何其他消息,除非您选择创建自定义代理来执行不同的操作。
我们无法回答这是否是个好主意,因为我们不知道订阅者收到多个相同消息(例如多个 FOO 和 SOMETHING 消息)的后果,因为消息在传递时将不包含有关哪个客户端发布它的任何信息(除非您选择在有效负载中对其进行编码)。