ZeroMQ High Water Mark не работает

когда я прочитал «Постоянные подписчики и высокие оценки» в руководстве по zmq, там было сказано: «HWM заставляет ØMQ отбрасывать сообщения, которые он не может поместить в очередь», но сообщения не теряются, когда я прогнал пример. Нажмите ctrl + c, чтобы закрыть durasub.py, а затем продолжите его.

пример из zmq на python. Остальные языки такие же.

durasub.py

import zmq                                              
import time                                             

context = zmq.Context()                                 


subscriber = context.socket(zmq.SUB)                    
subscriber.setsockopt(zmq.IDENTITY, "Hello")            
subscriber.setsockopt(zmq.SUBSCRIBE, "")                
subscriber.connect("tcp://localhost:5565")              


sync = context.socket(zmq.PUSH)                         
sync.connect("tcp://localhost:5564")                    
sync.send("")                                           


while True:                                             
    data = subscriber.recv()                            
    print data                                          
    if data == "END":                                   
        break                                           

durapub.py

import zmq                                        
import time                                       

context = zmq.Context()                           


sync = context.socket(zmq.PULL)                   
sync.bind("tcp://*:5564")                         

publisher = context.socket(zmq.PUB)               
publisher.bind("tcp://*:5565")                    

publisher.setsockopt(zmq.HWM, 2)                  

sync_request = sync.recv()                        

for n in xrange(10):                              
    msg = "Update %d" % n                         
    publisher.send(msg)                           
    time.sleep(1)                                 

publisher.send("END")                             
9
задан Samuel Liew 19 November 2011 в 20:15
поделиться