I'm playing with zeromq for simple network communication/control. For a nice introduction with diagrams see Nicholas Piel's post "ZeroMQ an introduction"
Here is the PUBlish/SUBscribe patter, which usually consist of one Publisher and one or many Subscribers.
Publisher:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | import zmq from random import choice import time context = zmq.Context() socket = context.socket(zmq.PUB) socket.bind("tcp://*:6000") # publish to anyone listening on port 6000 countries = ['netherlands','brazil','germany','portugal'] events = ['yellow card', 'red card', 'goal', 'corner', 'foul'] while True: msg = choice( countries ) +" "+ choice( events ) print "PUB-> " ,msg socket.send( msg ) # PUBlisher only sends messages time.sleep(2) # output: # PUB-> netherlands yellow card # PUB-> netherlands red card # PUB-> portugal corner |
And here is the Subscriber:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | import zmq context = zmq.Context() socket = context.socket(zmq.SUB) # specific server:port to subscribe to socket.connect("tcp://192.168.3.35:6000") # subscription filter, "" means subscribe to everything socket.setsockopt(zmq.SUBSCRIBE, "") print "waiting.." while True: msg = socket.recv() # SUBscriber only receives messages print "SUB -> %s" % msg # typical output: # waiting.. # SUB -> portugal corner # SUB -> portugal foul # SUB -> portugal foul |
One thought on “ZeroMQ PUB/SUB pattern”