跨主题排序MQTT消息

跨主题排序MQTT消息,mqtt,mosquitto,Mqtt,Mosquitto,我想从一个MQTT代理读取来自多个主题的消息(按写的时间顺序)。例如,我有一些主题(这些主题由客户端以不同的速率独立发布到QoS 2): 使用消息到期时间间隔,消息在一个长时间的持久会话中,订阅者可以来来去去,在线或离线,每个主题上的任意数量的消息都尚未读取 当我订阅:/foo/#时,我是否会收到来自主题/foo/a的消息,这些消息与来自/foo/b和/foo/c的消息按照代理收到的顺序交织在一起 上的规范说明: 。。。当服务器处理已发布到有序主题的消息时,它必须按照从任何给定客户端接收的顺序将

我想从一个MQTT代理读取来自多个主题的消息(按写的时间顺序)。例如,我有一些主题(这些主题由客户端以不同的速率独立发布到QoS 2):

使用消息到期时间间隔,消息在一个长时间的持久会话中,订阅者可以来来去去,在线或离线,每个主题上的任意数量的消息都尚未读取

当我订阅:
/foo/#
时,我是否会收到来自主题
/foo/a
的消息,这些消息与来自
/foo/b
/foo/c
的消息按照代理收到的顺序交织在一起

上的规范说明:

。。。当服务器处理已发布到有序主题的消息时,它必须按照从任何给定客户端接收的顺序将发布数据包发送给消费者(对于相同主题和QoS)[MQTT-4.6.0-5


“(针对同一主题和服务质量)”建议只能为相同的主题和QoS保证排序。因此,我关于跨主题排序的问题的答案似乎没有定义。

从Mosquitto broker的角度来看,如果客户机已断开连接,但会话到期时间较长,且具有QoS>0的活动订阅,则与连接到会话保持打开状态。这意味着消息将根据规范中的订购要求交付

回答的这一部分仅涵盖保留的邮件:

我的理解是,消息排序规则只适用于活动会话。也就是说,客户端发布消息,并且必须按照接收到消息的相同顺序将消息传递给当前消费者

但是,它不适用于客户端订阅主题筛选器并接收保留消息的情况。您可以从中获得规范意图的线索,因为当每个主题只有一条保留消息时,相同主题的消息顺序和QoS的概念是毫无意义的

与通配符订阅匹配的保留邮件的传递顺序未定义。在MOSQUITO中,它大致按照传递顺序、广度和深度进行。不过,这很可能会在将来更改为被排序。

我使用了错误的单词“保留”,我在MQTT术语中看到的只是最后一条消息,我指的是来自持久会话的消息..更新的问题..我看到..似乎所有的事情都围绕着会话,所以我希望消息传递将根据会话筛选器排序..但是规范并没有真正达到那里。。
/foo/a
/foo/b
/foo/c