2016-09-26 40 views
0

在MQTT協議的上下文中,是否有一種方法可以使客戶端在沒有該主題的訂閱者時不發送發佈消息?當沒有訂閱者時減少MQTT流量

換句話說,有沒有進行用戶感知出版,減少客戶發佈到代理網絡流量的標準方式?

這對於我們有許多傳感器能夠產生大量數據的應用非常重要,但是大多數時候,沒有人會對所有這些數據感興趣,但是隻有一小部分,我們想要節省電池或避免網絡擁塞。

回答

2

在即將到來的MQTT V5規範經紀人可以指示到客戶端,有一個主題沒有訂戶當客戶端發佈到該主題。這僅適用於QoS 1或QoS 2發佈,因爲QoS 0消息不會導致回覆。

+1

這有什麼用?在發佈的尖端,可能沒有訂閱者,但有人可能會在下次發佈之前訂閱 – hardillb

+0

。無可否認,它並沒有真正幫助這種情況。它確實有助於減少QoS 2流量的流量,因爲您不需要完成它。 – ralight

+0

爲什麼沒有MQTT * v4 *? –

1

不,出版商完全不知道有多少訂閱者,有可能是零或數千。

這是一個關鍵點,以發佈/訂閱消息,信息生產者和消費者的幾乎完全脫鉤。

1

想必你可以設計你的設備和應用程序,從而使設備以及發佈數據的「數據主題」,它也贊同另一特定於設備的「命令主題」控制設備數據發佈。如果應用程序對來自特定設備的數據感興趣,則它必須知道哪個設備要知道要訂閱哪個數據主題,因此它可以將「請立即發佈數據」命令發佈到相應的命令主題。

我想有可能是一個地方,在中間解決方案,設備數據發佈頻率較低時,沒有應用程序有興趣,更快,當至少一個應用是要求數據公佈。

在我看來,一件事MQTT是,你應該理想地設計設備和應用作爲一個系統,而不是隔離。