本文简要介绍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