[zeromq-dev] New bug in pub/sub since multipart

Martin Sustrik sustrik at 250bpm.com
Sat May 15 08:00:18 CEST 2010


Brian Granger wrote:
> Hi,
> 
> I am in the process of making sure the Python zeromq test suite passes
> with the new multipart message stuff.  We have a simple pub/sub tests
> that is failing, that used to pass.  Here is an outline of the
> session:
> 
> Process #1                                              Process #2
> 
> import zmq                                              import zmq
> c = zmq.Context()                                    c = zmq.Context()
> s = c.socket(zmq.SUB)                            s = c.socket(zmq.PUB)
> s.connect('tcp://127.0.0.1:5555')                s.bind('tcp://127.0.0.1:5555')
> s.setsockopt(zmq.SUBSCRIBE,'')
> # Wait for a while to allow connection...
>                                                               s.send('foo')
> s.recv(zmq.NOBLOCK) # Nothing!
>                                                               s.send('bar')
> s.recv(zmq.NOBLOCK) # 'bar'
>                                                               s.send('bam')
> s.recv(zmq.NOBLOCK) # 'bam'
> 
> Each process was typed interactively, so the time scales between
> everything are long (seconds) - plenty enough time for zeromq to
> connect, send/recv.
> 
> I am wondering if the underlying problem is the following.
> Previously, the topic and message was sent in a single send
> ("topicmessage").  Now the idea is that you can send the topic and
> message are parts:
> 
> s.send_multipart(['topic','message'])  # the python version.
> 
> But, what happens with pub/sub sockets now if the message only has 1
> part (like my example).  In other words, the topic and message are
> sent as 1 part?  What is the desired behavior?  Should this still
> work?  Do we always require a min of 2 parts for a pub/sub socket?

Yes, it should work. The functionality haven't changed. The only thing 
added is "When multi-part message is sent from PUB to SUB, matching is 
done only on the first part of the message."

One additional question: Is there a sleep after the bind?

Martin



More information about the zeromq-dev mailing list