Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Won't Fix
-
proton-0.6, proton-0.7
-
None
-
None
-
None
-
Fedora 19, Python 2.7.5
Description
Sink:
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()
Source:
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()
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:
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.
Based on that, I expect that I should not need to call recv.