对发布的肯定 - MQTT

时间:2016-06-17 07:48:07

标签: ruby mqtt ruby-mqtt

如何识别publishtopic是否成功。有没有办法在发布主题时得到确认。

如果客户端之间publish期间连接丢失(发布者/订阅者)如何处理它。

我不希望订阅者在收到pay_load后在发布端向特定主题发送确认。

这是我的红宝石代码:

假设我已经创建了客户(@client)并在双方都进行了配置。

发布

def publish_it
  @client.publish('test/hai', 'message')
  # Ack the publish
end

订阅

@client.subscribe('test/#')

@client.get do |topic,message|
  puts "#{topic}: #{message}"
end

1 个答案:

答案 0 :(得分:5)

MQTT中没有端到端(发布者到订阅者)传递通知。这是因为作为发布/订阅协议,发布者无法知道给定主题有多少订阅者,可能存在从0到n的任何内容。

规范中内置的QOS级别确保消息从发布者传递到代理(然后从代理传递到订阅者)。如果要确保传递消息,请使用QOS级别1或2。

QOS 1将确保至少发送一次消息(如果存在网络问题,可能会更多)

QOS 2将确保仅发送一次消息。

在大多数MQTT客户端库中,还有deliveryComplete回调,应该在完成发布的所有QOS握手后调用,如果添加其中一个,则可以合理地确信消息具有从经销商到经纪人。不幸的是,我无法在Ruby客户端

中看到这一点
相关问题