本文簡要介紹ZMQ常用的通信模式
請求響應模式
- 常規搭配:
ZMQ_REQ
+ZMQ_REP
- 帶輸入負載(Round Robin)均衡搭配:
ZMQ_REQ
+ZMQ_ROUTER
- 消息分發搭配:
ZMQ_ROUTER
+ZMQ_DEALER
- 帶輸出負載(load-balance)均衡搭配:
ZMQ_DEALER
+ZMQ_REP
ZMQ_REQ
模式在發送消息時,ZMQ
底層會在消息內容頭部插入一個空幀,在接收消息時,會去掉空幀,將內容返回給應用層。
ZMQ_REP
模式在接收消息時,會將消息空幀之前的信封幀保存起來,將空幀之后的內容傳給上層應用。上層應用在響應消息時,底層會在響應消息前加上空幀以及對應請求的信封幀。
ZMQ_ROUTER
模式在接收消息時,ZMQ
底層會在消息頭部添加上一個信封幀,用於標記消息來源。該信封幀可由發送端指定(調用zmq_setsockopt(ZMQ_IDENTITY)
),也可由接收端自動生成唯一標識作為信封幀。在發送消息時,將信封幀之后的內容發送到以信封幀為標識的地址。
ZMQ_DEALER
模式,對接收到的消息公平排隊fair-queue,以Round-Robin方式發送消息。
發布訂閱模式
ZMQ_SUB
<-- ZMQ_PUB
任務管道模式
ZMQ_PUSH
-> [ ZMQ_PULL
, ZMQ_PUSH
] --> ZMQ_PULL
一對一通信
ZMQ_PAIR
<--> ZMQ_PAIR