Justin Ross created PROTON-564:
----------------------------------

             Summary: Messenger.work doesn't receive messages
                 Key: PROTON-564
                 URL: https://issues.apache.org/jira/browse/PROTON-564
             Project: Qpid Proton
          Issue Type: Bug
    Affects Versions: 0.6, 0.7
         Environment: Fedora 19, Python 2.7.5
            Reporter: Justin Ross


Sink:

{noformat}
from proton import Messenger, Message

msgr = Messenger()
msgr.start()

try:
    msgr.subscribe("amqp://~0.0.0.0:50000")

    msg = Message()

    while True:
        print "Tick; incoming={}".format(msgr.incoming)

        msgr.work()
        # msgr.recv() XXX
 
        for i in range(msgr.incoming):
            msgr.get(msg)
            print(msg)
finally:
    msgr.stop()
{noformat}

Source:

{noformat}
from proton import Messenger, Message

msgr = Messenger()
msgr.start()

try:
    msg = Message()
    msg.address = "amqp://0.0.0.0:50000/test"

    for i in range(10):
        print "Tick {}".format(i)

        msg.body = "Message {}".format(i)

        msgr.put(msg)
        msgr.send()
finally:
    msgr.stop()
{noformat}

On 0.6, it blocks on one of the work calls with incoming always 0.  On 0.7, it 
keeps looping through work calls with incoming always 0.  The source sends 
nothing.

Note the XXX bit in the sink.  If you uncomment that.  The sink consumes the 
messages.

The python API documentation says the following:

{noformat}
Sends or receives any outstanding messages queued for a Messenger. This will 
block for the indicated timeout. This method may also do I/O work other than 
sending and receiving messages. For example, closing connections after 
messenger.stop() has been called.
{noformat}

Based on that, I expect that I should not need to call recv.





--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to