2017-03-09 1 views
1

私は最近paho mqtt for javaとmqttを使い始めました。そして、mqttブローカーとpahoクライアントによって提供される永続性メカニズムに悩まされています。たぶん、私はmqttの文脈における永続性の概念を誤解しているかもしれません。Paho Java - ファイルの永続性

使用し、我々はに従っているサポートする必要が場合:私たちのMQTTクライアントは7日のために切断されている可能性があること(私は非常に今までどうなる疑うが、OK)必要があり、さらにはアプリケーションが取得せずにシャットダウンしますそれらの7日間に接続を戻し、接続が解除されている間は7日間すべてのメッセージをすべて送信するようになっています。

Pahoクライアントは、ブローカまたはダウン中にバッファされたメッセージの永続性をサポートします。ネットワークが戻ったりブローカが起動すると、バッファされたメッセージが送信されますが、クライアントがあってもアプリケーションがシャットダウンすると、切断されたか、ブローカーが利用できませんでした。

基本的に私の質問です - 切断されたバッファされたメッセージは、pahoクライアントがシャットダウンしてもう一度起動しても生き残る可能性がありますか?

答えて

0

仕様状態、それについては何も、唯一especifiesある:

Aがメッセージを保持する保持フラグを正常MQTTメッセージがtrueに に設定されています。ブローカーは最後に保持されたメッセージとそのトピックの対応する QoSを保存します。 トピックパターンにサブスクライブする各クライアント(保持されたメッセージのトピックと一致する)は、サブスクライブ後すぐに メッセージを受信します。各トピックについて メッセージはブローカーによって保存されます。

あなたが見ることができるように、あなたの顧客にのみそのトピックの最後に公開メッセージが表示されます...その背後にある他の

すべてが良いために帰ってきました!

+2

保存されているメッセージは、キューに入れられたメッセージとはい、私は 'MqttDefaultFilePersistence'を使用していたクライアント – hardillb

0

MemoryPersistenceモジュールではなくMqttDefaultFilePersistenceを使用していると仮定すると、クライアントはブローカに到達できないときにメッセージをキューに入れ、クライアントが再起動してもメッセージはキューに入れられます。

オフラインバッファリングは比較的新しい機能であるが、それは現在のすべてに

+0

における持続異なる構築する必要があります。ブローカを停止して再び起動すると、正常に動作します。キューに入れられたメッセージは、ブローカが再び起動するとブローカに送信されます。しかし、**((クライアントがオフラインまたはブローカーがダウンしている)&pahoクライアントが再起動した場合)**は動作しません。基本的に、私はクライアントの再起動に耐え、クライアントが再び接続されたときに送信されるように、オフラインでバッファリングされたメッセージが必要です。私はもう一度それを確認するためにもう一度試してみる、多分私は何かを逃した。 – BojanSM

+0

クリーンセッションをtrueに設定していますか?これはうまくいく必要があります。 – hardillb

+0

いいえ、クリーンセッションは間違いですが、明日はもう一度試してみることにします。結果についてお知らせします。これまでのあなたの努力に感謝します。 – BojanSM