2017-03-09 87 views
1

我最近開始使用paho mqtt for java和mqtt,我堅持使用由mqtt broker和paho client自己提供的持久性機制。也許我誤解了(這可能是)在mqtt上下文中持久化的概念。Paho Java - 文件持久性

,我們要支持是繼使用案例:它應該是可能的,我們的MQTT客戶端已經斷開7天(我很懷疑會不會發生,但是OK),甚至應用程序關閉沒有得到在這7天內連接回來,一旦它連接並運行,在斷開連接的同時發送所有7天的所有消息。

Paho客戶端支持緩存消息在其或代理關閉時的持久性,一旦網絡回來或代理啓動,緩衝消息就會發送,但如果應用程序在客戶端關閉時關閉,則無法發送緩衝消息斷開連接或經紀人不可用。

基本上我的問題是 - 是否有可能斷開連接的緩衝消息將在paho客戶端關閉並重新啓動後生存下來?

回答

0

說明書陳述一無所知,只有especifies:

甲已保留消息是與所保留的標誌正常MQTT消息集 爲true。代理將存儲上次保留的消息和該主題的相應QoS。訂閱後,每個訂購了 主題模式(與保留的消息的主題相匹配)的客戶端將立即接收該消息。對於每個主題只有 一個保留的消息將由代理存儲。

正如你所看到的,您的客戶將只得到最後發佈的消息爲主題......

一切的背後是重歸於好!

+2

保留的消息是從排隊的消息,並在客戶端 – hardillb

0

假設您使用的是MqttDefaultFilePersistence而不是MemoryPersistence模塊,則客戶端應該在消息無法到達代理時將其排隊,並且這些排隊的消息也應該在客戶端重新啓動時保留下來。

離線緩衝是一個相對較新的功能,但它應該是當前在所有建立

+0

持久是的,我使用'MqttDefaultFilePersistence'不同。如果我停止代理並再次啓動它,那麼可以正常工作 - 排隊後的消息一旦再次發送,就會發送給代理。但是,**((客戶端處於脫機狀態或代理關閉)&paho客戶端重新啓動時)**不起作用。基本上我需要離線緩衝消息,以保持客戶端重新啓動並在客戶端再次連接時發送。我會再次嘗試再次檢查它,也許我錯過了一些東西。 – BojanSM

+0

你是否將clean session設置爲true?這可能需要是假的 – hardillb

+0

不,乾淨的會話當然是錯誤的,但當我開始工作時,我會再次測試這個明天。會通知你結果。感謝您迄今的努力。 – BojanSM