对发布的肯定 - MQTT

Gok*_*l M 1 ruby mqtt ruby-mqtt

如何识别是否publishtopic被成功与否.有没有办法获得发布到主题的确认.

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

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

这是我的红宝石代码:

假设,我已创建客户端(@client)并在双方配置.

发布

def publish_it
  @client.publish('test/hai', 'message')
  # Ack the publish
end
Run Code Online (Sandbox Code Playgroud)

订阅

@client.subscribe('test/#')

@client.get do |topic,message|
  puts "#{topic}: #{message}"
end
Run Code Online (Sandbox Code Playgroud)

har*_*llb 5

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

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

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

QOS 2将确保仅传递一次消息.

在大多数MQTT客户机库里面还有deliveryComplete哪些应该被称为一旦所有的QOS握手的发布回调已经完成,如果你添加的其中之一,你可以合理确信该邮件已经从出版商尽可能使它经纪人.不幸的是,我无法在Ruby客户端中看到这一点