
- ZeroMQ 教程
- ZeroMQ - 首頁
- ZeroMQ - 概述
- ZeroMQ - 安裝
- ZeroMQ - 特性
- ZeroMQ 訊息傳遞
- ZeroMQ - 套接字型別
- ZeroMQ - 通訊模式
- ZeroMQ - 傳輸協議
- ZeroMQ - 訊息框架
- 擴充套件性和效能
- ZeroMQ - 負載均衡
- ZeroMQ - SMP
- ZeroMQ - 多執行緒
- ZeroMQ - 效能注意事項
- ZeroMQ 有用資源
- ZeroMQ - 有用資源
- ZeroMQ - 討論
ZeroMQ - 訊息框架
理解 ZeroMQ 中的訊息
在 ZeroMQ 中,訊息是一個離散的資料單元,在應用程式之間或同一應用程式的不同元件之間傳遞。從 ZeroMQ 的角度來看,訊息被認為是不透明的二進位制資料。
它們是使用 ZeroMQ 支援的各種訊息模式透過網路傳送和接收的資料塊。ZeroMQ 提供以下幾種訊息模式:
- 釋出/訂閱 (PUB/SUB)
- 請求/應答 (REQ/REP)
- 推/拉 (PUSH/PULL)
- 路由器/處理程式 (Router/Dealer)
訊息框架
ZeroMQ 訊息庫指的是在應用程式或服務之間交換的訊息的結構和組織。訊息框架提供了一種構建、傳送和接收訊息的方法,並確保訊息被接收應用程式正確地格式化、路由和處理。
這是一個簡單的示意圖,演示了 ZeroMQ 如何構建訊息框架:

此處:
- 套接字 (Socket): 套接字處理網路上的通訊。它傳送和接收訊息並內部管理框架。
- 佇列 (Queue): 它表示 ZeroMQ 用於儲存和管理訊息及其框架的內部機制。它確保訊息被正確處理,即使訊息被拆分為多個框架。
- 訊息 (Message): 它是由一個或多個框架組成的邏輯資料單元。
- 框架 (Frame): 構成訊息的單個數據塊。框架按順序傳送和接收,並由 ZeroMQ 重新組裝成完整的訊息。
訊息如何被管理和構建?
在 ZeroMQ 中,信封、正文和框架的概念對於理解訊息如何構建和管理非常重要。
- 信封 (Envelope)
- 正文 (Body)
- 框架 (Frames)
信封 (Envelope)
在 ZeroMQ 中,術語“信封”通常用於 ROUTER 套接字的上下文中。信封通常包含元資料,例如路由資訊,用於將訊息路由到正確的接收者。它更常與 ROUTER 套接字相關聯,其中信封包含訊息路由標識和其他元資料。
正文 (Body)
ZeroMQ 中訊息的正文是指正在傳送的實際資料。這是應用程式處理的訊息有效負載。正文是套接字之間傳輸的主要內容。
框架 (Frames)
當處理更復雜的套接字型別(如 STREAM 和 ROUTER)時,框架的概念就變得很重要。訊息可以拆分為多個框架,每個框架都是一塊資料,這些資料共同構成完整的訊息。這對於處理大型訊息或具有多個部分的訊息很有用。
ZeroMQ 本身不定義或實現特定型別的訊息框架,如某些協議那樣。相反,ZeroMQ 提供了一個靈活的訊息系統,其中訊息的框架和序列化由應用程式處理。但是,它提供了一些訊息模式和套接字型別,這些模式和型別以不同的方式隱式地處理訊息框架。它們是:
釋出/訂閱 (PUB/SUB)
- 釋出者 (PUB) - 將訊息傳送給多個訂閱者。
- 訂閱者 (SUB) - 基於訂閱過濾器接收訊息。
- 框架 - ZeroMQ 在內部處理框架,但訊息按原樣釋出。
請求/應答 (REQ/REP)
- 請求 (REQ) - 嚮應答套接字傳送請求並等待響應。
- 應答 (REP) - 接收請求併發送響應。
- 框架 - ZeroMQ 將訊息作為離散實體進行框架處理,保持請求和響應協議。
DEALER 和 ROUTER
- 處理程式 (DEALER) - 充當非阻塞請求者,能夠同時處理多個請求。
- 路由器 (ROUTER) - 以更復雜的方式處理訊息,根據標識或其他條件進行路由。
- 框架 - 訊息包含路由元資料或識別符號,ZeroMQ 使用此元資料對訊息進行框架處理以進行路由。
PUSH 和 PULL
- 推送 (PUSH) - 將訊息傳送到拉取套接字,通常用於分發任務。
- 拉取 (PULL) - 從推送套接字接收訊息。
- 框架 - 訊息以輪詢方式分發,ZeroMQ 在內部處理框架。
交付保證
ZeroMQ 不提供內建的訊息傳遞保證,並且 ZeroMQ 中沒有自動重試機制。如果傳送訊息但接收者不可用或網路發生故障,則訊息可能會丟失。