阿里雲Simple Message Queue (formerly MNS) (SMQ)是一種高效、可靠、安全、便捷和可彈性擴充的分布式Message Service。輕量訊息佇列(原 MNS)能夠協助開發人員在應用的分布式組件之間自由地傳遞資料、通知訊息,從而構建松耦合系統。輕量訊息佇列(原 MNS)支援隊列模型和主題模型。
訪問方式
除公網訪問方式外,輕量訊息佇列(原 MNS)還支援Virtual Private Cloud。您可以完全掌控自己的專用網路,例如選擇IP位址範圍、配置路由表和網關等,您可以在自己定義的專用網路中使用阿里雲資源如雲端服務器、雲資料庫RDS版和負載平衡等。
隊列模型
隊列模型提供高可靠、高並發的一對一消費模型,即隊列中的每一條訊息都只能夠被某一個消費者消費。
隊列就像一家旋轉壽司店。壽司店中有多個壽司師傅(生產者)在製作精美的壽司,每一份壽司都是獨特的,顧客(消費者)可以從傳送帶上拿取中意的壽司進行食用(消費)。
隊列模型訊息流程
如隊列模型訊息流程所示,生產者向隊列發送訊息,消費者從隊列取出訊息。
隊列模型特性
多種隊列模式
支援普通隊列、延遲隊列。您可以個人化地配置隊列屬性以滿足不同應用情境。
海量並發訪問
支援多個生產者和消費者並發訪問同一隊列,並能確保某條訊息在取出之後的特定時間內,無法被其他消費者獲得。您可以根據業務需求自由伸縮並發訪問數。
訊息投遞保障
在訊息有效期間內,確保訊息至少能被成功消費一次。輕量訊息佇列(原 MNS)接入阿里雲帳號體系,使用者間資源隔離,確保隊列中的訊息不會被非法擷取。
分散式交易訊息
提供完善的分布式環境下事務訊息解決方案。
日誌管理
支援查看每條訊息的完整生命週期事件,包括髮送、接收和刪除,方便問題排查。更多資訊,請參見日誌管理概述。
CloudMonitor
支援查看隊列情況,並且可以自訂警示項,當隊列情況不符合期望時,您能夠及時知曉。更多資訊,請參見CloudMonitor。
主題模型
主題模型提供一對多的發布訂閱模型,支援訊息通知。
主題就像一份報紙,多個讀者到郵局訂閱了這份報紙。當報紙推出最新一期時,讀者(包括郵局的夥伴)可以選擇以下方式來擷取:
讓郵局投遞員將報紙都投遞(推送)到家裡(特定的地址)。
去就近的報刊亭(訂閱點)自行擷取報紙(報紙會先被郵局投遞員集中送到各個報刊亭)。
主題模型訊息流程
如主題模型訊息流程所示:
主題上有多個訂閱,每個訂閱對應不同的隊列。
一條訊息發布到主題後,會被分別推送到不同的訂閱指定的隊列。
訂閱支援訊息過濾,您可在訂閱中指定過濾標籤。
未指定過濾標籤的訂閱:無論訊息有沒有指定訊息標籤,都可以推送到指定的隊列。
已指定過濾標籤的訂閱:只有訊息指定了匹配的訊息標籤,才會推送到指定的隊列。
主題模型特性
通知訊息
輕量訊息佇列(原 MNS)服務端主動推送訊息到指定隊列,減少使用者端輪詢和資源消耗,使您可以專註於商務邏輯,避免對其他Message Service用戶端的依賴及過多代碼影響服務穩定性。更多資訊,請參見Endpoint簽名認證和主題使用手冊。
對於因網路或其他原因無法提供回調地址的情況,輕量訊息佇列(原 MNS)仍支援將訊息推送到隊列,您可以直接從隊列擷取訊息。原先使用隊列模型的消費者可無縫消費主題中的訊息。更多資訊,請參見隊列和廣播拉取訊息模型。
一對多廣播訊息
一條發布到主題中的訊息可被多個訂閱者訂閱。輕量訊息佇列(原 MNS)會按照各訂閱者指定的隊列推送訊息。發布一次即可推送到多個接收端,保證訊息發布的原子性。
訊息標籤過濾
在支援一對多廣播訊息的基礎上,在訂閱中還支援對訊息進行過濾。可以訂閱主題中帶有特定標籤的訊息。在建立訂閱時指定訊息過濾標籤,然後PublishMessage時指定訊息標籤,輕量訊息佇列(原 MNS)在推送訊息時會根據標籤進行過濾,僅推送訊息標籤與訂閱中指定的過濾標籤匹配的訊息到指定隊列上。更多資訊,請參見主題介面規範。
訊息投遞
訊息投遞保障 :在訊息有效期間內,保證發布到主題中的訊息會按照指定的策略和格式推送給使用者端程式。更多資訊,請參見NotifyStrategy。
多種訊息格式
XML:訊息體為XML格式,包含訊息本文和訊息屬性。
JSON:訊息體為JSON格式,包含訊息本文和訊息屬性。
SIMPLIFIED:訊息體即使用者端發布的訊息,不包含任何屬性資訊(精簡格式,即文字格式設定)。更多資訊,請參見:
日誌管理
支援查看每條訊息發布進主題的記錄和每次推送給使用者端的記錄,包括重試推送的記錄和結果等,能夠全面展示每條訊息的生命週期,方便問題調查。更多資訊,請參見日誌管理概述。
CloudMonitor
支援查看訊息推送的記錄,當推送失敗次數比較多時,通過添加警示的方式及時知曉。更多資訊,請參見CloudMonitor。