MQTT:服务器端的消息队列

时间:2015-05-15 09:54:18

标签: mqtt

我正在使用mqtt来实现一种电子邮件通知系统。我还计划在webapp中使用它来进行触发通知。当我们抛出具有JSON格式的发布者ID的MQTT url时,我对MQTT是否在服务器端存储数据感到困惑?我问这个的原因是因为在我的情况下,MQTT只存储最后抛出的数据,如果我发送另一个数据,那么前一个数据就会消失。我想知道它是从出生时出现在MQTT一侧(因为MQ代表消息队列)&我还没有使用或需要在服务器/消费者方面实施?

1 个答案:

答案 0 :(得分:8)

Internet上存在常见错误... MQTT代表MQ遥测传输而非消息队列遥测传输。它由IBM(与Eurotech)共同创建,是IBM MQ产品系列的一部分。 MQTT没有排队。代理接收有关主题的消息,并将其转发给该主题的所有订阅者。 这种行为主要有两种变体:

  • 如果发布者发送带有“retain”标志的消息,则代理会存储此消息(仅限此消息)。如果客户端订阅该主题,则代理会立即发送此最后一条存储消息。这就是所谓的“最后知道的消息”
  • 如果订户使用“clean session”连接到代理为false,则仅当客户端处于脱机状态时,代理才会保存所有订阅和所有消息。它就像一个队列,但不是一个非常排队的队列。如果“clean session”为false,则如果客户端脱机但某些发布者向主题发送消息,则会对其进行订阅,代理会存储这些消息。当客户端返回在线状态时,它将收到所有丢失的消息。

保罗。