全部產品
Search
文件中心

Simple Message Queue (formerly MNS):什麼是輕量訊息佇列(原 MNS)

更新時間:Sep 03, 2024

阿里雲Simple Message Queue (formerly MNS) (SMQ)是一種高效、可靠、安全、便捷和可彈性擴充的分布式Message Service。輕量訊息佇列(原 MNS)能夠協助開發人員在應用的分布式組件之間自由地傳遞資料、通知訊息,從而構建松耦合系統。輕量訊息佇列(原 MNS)支援隊列模型和主題模型。

訪問方式

除公網訪問方式外,輕量訊息佇列(原 MNS)還支援Virtual Private Cloud。您可以完全掌控自己的專用網路,例如選擇IP位址範圍、配置路由表和網關等,您可以在自己定義的專用網路中使用阿里雲資源如雲端服務器、雲資料庫RDS版和負載平衡等。

隊列模型

隊列模型提供高可靠、高並發的一對一消費模型,即隊列中的每一條訊息都只能夠被某一個消費者消費。

隊列就像一家旋轉壽司店。壽司店中有多個壽司師傅(生產者)在製作精美的壽司,每一份壽司都是獨特的,顧客(消費者)可以從傳送帶上拿取中意的壽司進行食用(消費)。

隊列模型訊息流程

隊列模型訊息流程所示,應用系統A(生產者)向隊列發送訊息,應用系統B(消費者)從隊列取出訊息。

圖 1. 隊列模型訊息流程queuemodel

隊列模型特性

  • 多種隊列模式

    支援普通隊列、延遲隊列。您可以個人化地配置隊列屬性以滿足不同應用情境。

  • 海量並發訪問

    支援多個生產者和消費者並發訪問同一隊列,並能確保某條訊息在取出之後的特定時間內,無法被其他消費者獲得。您可以根據業務需求自由伸縮並發訪問數。

  • 訊息投遞保障

    在訊息有效期間內,確保訊息至少能被成功消費一次。輕量訊息佇列(原 MNS)接入阿里雲帳號體系,使用者間資源隔離,確保隊列中的訊息不會被非法擷取。

  • 分散式交易訊息

    提供完善的分布式環境下事務訊息解決方案。

  • 日誌管理

    支援查看每條訊息的完整生命週期事件,包括髮送、接收和刪除,方便問題排查。更多資訊,請參見日誌管理概述

  • CloudMonitor

    支援查看隊列情況,並且可以自訂警示項,當隊列情況不符合期望時,您能夠及時知曉。更多資訊,請參見CloudMonitor

主題模型

主題模型提供一對多的發布訂閱模型,支援訊息通知。

主題就像一份報紙,多個讀者到郵局訂閱了這份報紙。當報紙推出最新一期時,讀者(包括郵局的夥伴)可以選擇以下方式來擷取:

  • 讓郵局投遞員將報紙都投遞(推送)到家裡(特定的地址)。

  • 去就近的報刊亭(訂閱點)自行擷取報紙(報紙會先被郵局投遞員集中送到各個報刊亭)。

主題模型訊息流程

主題模型訊息流程所示:

  • 主題上有多個訂閱,每個訂閱對應不同的隊列。

  • 一條訊息發布到主題後,會被分別推送到不同的訂閱指定的隊列。

  • 訂閱支援訊息過濾,您可在訂閱中指定過濾標籤。

    • 未指定過濾標籤的訂閱:無論訊息有沒有指定訊息標籤,都可以推送到指定的隊列。

    • 已指定過濾標籤的訂閱:只有訊息指定了匹配的訊息標籤,才會推送到指定的隊列。

圖 2. 主題模型訊息流程topicmodel

主題模型特性

  • 通知訊息

    • 輕量訊息佇列(原 MNS)服務端主動將訊息推送到您指定的隊列,消除使用者端不必要的輪詢和資源消耗。您可以將資源集中在處理自身業務的邏輯中,避免對其他Message Service產品用戶端的依賴,避免因為過多代碼引入而影響自身服務的穩定性。更多資訊,請參見:

    • 對於因為網路或者其他原因不方便提供回調地址的情況,輕量訊息佇列(原 MNS)依然支援將訊息推送到隊列中,您仍然可以直接到隊列中擷取訊息。原先使用隊列模型的消費者,可以無縫消費主題中的訊息。更多資訊,請參見:

  • 一對多廣播訊息

    • 發布到主題中的一條訊息可以被多個訂閱者訂閱。輕量訊息佇列(原 MNS)會按照多個訂閱指定的隊列去推送訊息。

    • 您僅需發布一次,就可以將訊息推送到多個接收端,保證了訊息發布的原子性。

  • 訊息標籤過濾

    在支援一對多廣播訊息的基礎上,在訂閱中還支援對訊息進行過濾。可以訂閱主題中帶有特定標籤的訊息。在建立訂閱時指定訊息過濾標籤,然後PublishMessage時指定訊息標籤,輕量訊息佇列(原 MNS)在推送訊息時會根據標籤進行過濾,僅推送訊息標籤與訂閱中指定的過濾標籤匹配的訊息到指定隊列上。更多資訊,請參見主題介面規範

  • 訊息投遞

    輕量訊息佇列(原 MNS)支援訊息推送到隊列:

  • 訊息投遞保障

    在訊息有效期間內,保證發布到主題中的訊息會按照指定的策略和格式推送給使用者端程式。推送策略包括:

    • 退避重試(BACKOFF_RETRY)

      • 重試3次。

      • 每次重試的間隔時間是10秒到20秒之間的隨機值。

    • 指數衰減重試(EXPONENTIAL_DECAY_RETRY)

      • 重試176次。

      • 總計重試時間為1天。

      • 每次重試的間隔時間指數遞增:1,2,4,8,16,32,64,128,256,512,512,...,512秒(共167個512秒)。

  • 多種訊息格式

    • XML:訊息體為XML格式,包含訊息本文和訊息屬性。

    • JSON:訊息體為JSON格式,包含訊息本文和訊息屬性。

    • SIMPLIFIED:訊息體即使用者端發布的訊息,不包含任何屬性資訊(精簡格式,即文字格式設定)。更多資訊,請參見:

  • 日誌管理

    您可以通過日誌管理的方式,查看每一條訊息發布進主題的記錄,以及每一次推送給使用者端的記錄,包括重試推送的記錄、推送結果等,能夠展示每條訊息的生命週期。您可以通過日誌管理,方便的進行問題調查。更多資訊,請參見日誌管理概述

  • CloudMonitor

    您可以通過CloudMonitor查看訊息推送的記錄,及時查看和監控訊息的推送情況,當推送失敗次數比較多時,能夠通過添加警示的方式及時知曉。更多資訊,請參見CloudMonitor