push/pull模式
push/pull模式,这是一个什么模式呢?战争时期,食物紧缺,实行配给制,大家都排好队,有人专门发放食物,前一个人领取了食物,后一个人跟上继续领取食物,这个push端就是发放食物的,pull端就是领取食物的,所不同的是,现实中,你领取完了食物就不能排队等候了,但zmq的push/pull模式中,一个pull端领取完了食物,可以继续排队等待push端发放食物。
我们发送出一条信息的时候worker会进行分配,按照分配进行转发
上代码,Ventilator端
#coding:utf-8 import zmq print("这是发送端,我的ip和端口是127.0.0.1:8001") cont = zmq.Context() sock = cont.socket(zmq.PUSH) sock.bind("tcp://127.0.0.1:8001") while True: data = raw_input(">>>") sock.send(data)
Sink端
#coding:utf-8 import zmq print("这是接收端,我的ip和端口是127.0.0.1:8000") cont = zmq.Context() sock = cont.socket(zmq.PULL) sock.bind("tcp://127.0.0.1:8002") while True: recv = sock.recv() print(recv)
Worker
#coding:utf-8 import zmq print("I am worker 1") cont = zmq.Context() recv_sock = cont.socket(zmq.PULL) recv_sock.connect("tcp://127.0.0.1:8001") send_sock = cont.socket(zmq.PUSH) send_sock.connect("tcp://127.0.0.1:8002") while True: recv = recv_sock.recv() send_sock.send(recv) print("worker 1 is worked,it's content is %s"%recv)