消息隊列系列二(IOT中消息隊列的應用)

許多消息隊列旨在爲您的應用程序提供輕量級的發佈/訂閱消息傳輸協議。爲何以及什麼時候在您的物聯網項目中使用消息隊列?後端

考慮溫室中的溫度傳感器,它測量溫度。您的應用程序能夠在15分鐘的時間間隔內(天天月96次)將溫度發送到消息隊列。而不是處理溫室中的數據並始終鏈接。安全

物聯網的消息隊列旨在提供輕量級的發佈/訂閱消息傳輸。您只需發送數據並在另外一項服務中處理數據,而不是保留處理溫室數據的應用程序。這須要較少的網絡帶寬,這可能會限制您的傳感器,或者您的傳感器經過衛星鏈路進行通訊。服務器

消息隊列使您的應用程序具備低功耗,發送最小化的數據包,並有效地將信息分發給一個或多個接收器。網絡

物聯網項目中的消息隊列

消息隊列是一種服務到服務通訊的方式。它容許應用程序經過相互發送消息進行通訊。消息隊列的基本體系結構很簡單,有些客戶端應用程序能夠建立消息並將它們傳遞到消息隊列。其餘應用程序/服務從隊列中檢索消息並處理消息中包含的請求和信息異步

消息能夠包含任何類型的信息。例如,它能夠得到有關應該從另外一個應用程序(可能位於其餘位置)開始的進程/任務的消息,或者它可能只是須要處理的數據。spa

物聯網和異步消息

因特網 應用程序被動反應和異步是一個「必須」。大多數IoT應用程序應該可以處理來自設備的許多鏈接以及從中過去的全部消息設計

異步消息傳遞在機器到機器通訊中被普遍使用。這覺得這發送方不會指望當即相應,而且發送方在等待相應是時不會「阻止」任何內容。代理

異步通訊能夠實現靈活性,應用程序能夠發送消息,而後繼續處理其餘事情-在同步通訊中,它必須等待實時響應。您能夠將消息寫入隊列,而後讓相同的業務員邏輯發生,而不是調用Web服務並等待它完成。blog

在您的應用程序須要完成某些操做但不須要當即完成,或者甚至不關心結果的狀況下,隊列可能很棒。隊列

解耦

消息隊列可用於實現解耦,並有助於保持結構的靈活性。它使得用不一樣語言編寫的兩個不一樣的應用程序鏈接在一塊兒很是容易。

消息隊列容許每一個組件獨立地執行其任務-它容許組件保持徹底自治而且彼此不知道,一項服務的更改不該要求更改其餘服務。它是分離服務的過程所以它們的功能更加獨立。

冗餘和彈性

應用程序有時會崩潰 - 它會發生。這多是因爲超時或您的代碼中只有錯誤影響整個應用程序。消息隊列強制可使接收應用程序確認它已完成任務,而且能夠安全地從隊列中刪除該任務。若是接收應用程序中的任何內容失敗,該消息將保留在隊列中。

當目標程序繁忙或未鏈接時,消息隊列提供臨時消息存儲。

經過打破您的應用程序並按隊列分隔不一樣的組件,您固有地建立了更多的彈性。即便部分後端處理延遲,您的應用程序仍然能夠運行。

交通高峯

許多應用程序的流量激增。門鈴應用程序,讓您能夠從任何地方回答您的門,萬聖節期間可能會有交通高峯,而購物應用程序可能會在黑色星期五有交通高峯。經過對數據進行排隊,您能夠確保最終保留和處理您的數據; 即便這意味着因爲高流量峯值,它須要比日常更長的時間。

使用RabbitMQ對IoT進行消息隊列排隊

有一些IoT通訊協議和標準旨在簡化物聯網設計。若是您考慮基於隊列的解決方案,CloudAMQP會提供兩種最流行的開放式消息傳遞協議;AMQP和MQTT經過RabbitMQ。

AMQP是一種安全可靠的協議,開銷低,很是適合物聯網應用,AMQP是一種比MQTT更先進的協議,更可靠,更好的支持安全性。AMQP還具備靈活路由,持久和持久隊列,羣集,聯合和高可用性隊列等功能。缺點是它是一個更冗長的協議-取決於您如何實施您的解決方案。

MQTT是爲物聯網設計的另外一種協議。MQTT宣傳的物聯網優點僅適用於功耗極地的設備。MQTT很是節能 ,它很是注重最小的線路佔用空間。因爲其簡單性,在客戶端上實現MQTT所需的工做量比AMQP要少。可是MQTT缺乏從服務器到客戶端的受權和錯誤通知,這是一個很大的限制。

RabbitMQ是一個消息隊列軟件,稱爲消息代理或隊列管理器,簡單地說,它是一個能夠定義隊列的軟件,應用程序能夠鏈接到隊列並將消息傳輸到隊列上。

相關文章
相關標籤/搜索