2016-06-17 12 views
0

publishtopicが成功したかどうかを確認する方法。トピックへの公開について承認を得る方法はありますか?公開時の謝辞 - MQTT

publishパブリッシャー/サブスクライバー)の処理方法は、クライアント間で接続が切断された場合に発生します。

私はpay_loadを受け取った後で、購読者が発行側の特定のトピックにackを送信しないようにしたいと思います。ここで

は私のRubyコードです:

は、私はクライアント(@client)を作成し、両側に設定されている、と仮定します。

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

を公開端に終わり(加入者への発行元)MQTTで配信通知はありません

@client.subscribe('test/#') 

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

答えて

2

購読。これは、パブ/サブプロトコルとして、パブリッシャが特定のトピックに対して何人の加入者がいるかを知る方法がないため、0からnのいずれかが存在する可能性があるからです。

仕様に組み込まれているQOSレベルは、メッセージがパブリッシャからブローカに(そしてブローカからサブスクライバに)配信されることを保証します。あなたは、メッセージが使用、その後配信されていることを確認したい場合はどちらかのQOSレベル1または2

QOS(ネットワークに問題がある場合、おそらくそれ以上)の1のメッセージを確実にしますが、少なくとも一度配信され

QOS 2保証しますメッセージは一度だけ配信されます。

ほとんどのMQTTクライアント・ライブラリには、deliveryCompleteコールバックがあります。コールバックは、パブリッシュのすべてのQOSハンドシェイクが完了した後にコールする必要があります。これらのいずれかを追加すると、メッセージが元のブローカーまでの出版社。残念ながら、これはRubyクライアントでは実装されていません

関連する問題