ZeroMQ中的消息信封

幾種ZeroMQ socket信封格式

本文僅僅簡單介紹zs的REQ、REP、ROUTER、DEALER信封,作爲閱讀ZeroMQ資料筆記

REP socket信封

REP存儲所有的消息幀,直到第一個空消息幀到達,應用層才接收到一個 消息。 發送回覆的時候,REP纔將已保存的信封附加到消息中,然後使用與ROUTER一樣的語義發送(事實上REP也構建於ROUTER之上),但是爲了匹配REQ,REP必須強制遵循接收/發送的循環模式。

REQ socket信封

如果使用一個REQ socket連接一個ROUTER socket併發送一個REQ消息,你將獲得一個由三個幀組成的消息,如下圖所示:
REQ信封
1. 第三幀的數據由應用通過REQ socket發送
2. 第二幀的空消息由REQ socket在發送消息時自動添加
3. 第一幀的回覆地址由ROUTER socket在消息到達應用之前添加

如果對設備鏈擴展,可以在信封中加上信封,最新的信封總是在消息棧的最前面。
擴展設備鏈信封

ROUTER socket信封

第一種,REQ未設置身份標識的信封
如下圖所示,ROUTER對沒有設置身份標識的socket會分配一個唯一標識,也就是圖中的UUID
這裏寫圖片描述
如果REQ socket通過zmq_setsockopt函數設置了身份標識,ROUTER應用層將會將其作爲該socket發送消息的第一幀
這裏寫圖片描述

DEALER socket信封

使用ROUTER socket向DEALER socket發送消息時,信封僅需要添加一個身份幀(不需要發送空消息幀做分隔符)
DEALER信封
ROUTER socket會移除第一幀,僅發送第二幀。而ROUTER socket 收到DEALER socket 發送的消息後,會將身份幀加入到消息幀之前。

總結

英語不怎麼樣,所有有理解不到位的地方還請諸位指正。
近期時間比較緊張,幾乎每天都是朝八晚九(早上還要五點起牀看書晨跑),所有真正能夠花在學習ZeroMQ的時間並不多。我不得不承認這比我最初想象的學習曲線要曲折不少,因爲我必須充分了解它,才知道它適如何組合才能在特定系統中表現最佳,看來我還是too simple)

參考資料

http://zguide2.zeromq.org/page:all#toc47

如果還是不清楚,或是需要例子,請轉到:http://blog.csdn.net/pc0de/article/details/53057100

發佈了46 篇原創文章 · 獲贊 44 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章