2016-03-03 53 views
0

我是mqtt的新手,並且想要讓我的腦袋圍繞某些東西。我是否需要運行Mosquitto與遠程蚊子經紀商進行互動

我需要從遠程mosquitto代理處獲取(訂閱)主題的消息。該服務的文檔說我需要在我的服務器上運行一個mosquitto代理。

如果我理解正確,然後使用該mqtt寶石和管理使用這樣的連接的腳本:

MQTT::Client.connect(conn_opts) do |c| 
    # The block will be called when you messages arrive to the topic 
    c.get('test') do |topic, message| 
    puts "#{topic}: #{message}" 
    end 
end 

是經紀人?我是否需要在我的機器上運行蚊子,還是隻能使用腳本和mqtt

該文檔描述的體系結構和包括這些行:

第三方平臺需要一個MQTT經紀人安裝,將允許與我們的服務器在不同的盒子 通信。我們的服務器上的代理將 啓動連接並提供憑據以允許雙向通信 。

架構我心目中是一個預定的後臺處理,使用ruby-mqtt,將產卵,連接與遠程服務器mosquitto和精加工之前分批下拉新消息。這聽起來像是一個合理的方法從遠程mosquitto經紀人獲取消息?

我有一個偷偷摸摸的懷疑有一些我沒有得到...任何幫助/方向將不勝感激。謝謝!

回答

2

不,你不需要需要本地的MQTT服務器,你可以直接從你的ruby腳本連接到遠程服務器。

通常保持MQTT客戶端始終運行,而不僅僅是使用cron定期下載。儘管我認爲這可能會起作用,但您可以使用QoS 1/2並禁用清理會話,以便將消息保留在遠程服務器上。儘管它的名字是,MQTT不是一個消息排隊協議,它是一個發佈/訂閱協議,所以它有可能在遠程服務器上不允許你建立大量的消息。

然而,它可能需要有一個本地的MQTT服務器(例如mosquitto): *您當地的MQTT服務器可以處理的消息到磁盤的存儲,直到紅寶石是爲他們準備好 *它允許多個本地客戶端接收而不必多次發送通過網絡 *多個本地客戶端可以將消息發送給對方,即使在遠程網絡是向下

遠程服務器相同的消息

還警告說,紅寶石MQTT不支持QoS 1,但也不支持持續消息或自動重新連接,因此本地蚊子實例可以爲您解決其中一些問題。

+0

非常感謝!這現在很有意義。今天早上我觀看了這個截屏(https://www.youtube.com/watch?v=1GbYkCrbChw),這讓我相信我們想要的是設置與遠程代理的橋接。你的解釋有助於解釋原因。謝謝! – Apie

相關問題