Details
-
Bug
-
Status: Open
-
Major
-
Resolution: Unresolved
-
proton-c-0.31.0
-
None
-
None
-
Proton master@4a22a; Python 3.7.7; Fedora 31
Description
Documentation suggests that in a MessagingHandler on_message callback the user may call `self.release(event.delivery)` to release the message. Using this function the messages are still accepted. A modified helloworld_direct.py output is:
> python helloworld_direct.py Hello World! Releasing that message on_accepted
The source is
from __future__ import print_function, unicode_literals from proton import Message from proton.handlers import MessagingHandler from proton.reactor import Container class HelloWorld(MessagingHandler): def __init__(self, url): super(HelloWorld, self).__init__() self.url = url self.sent = False def on_start(self, event): self.acceptor = event.container.listen(self.url) event.container.create_sender(self.url) def on_sendable(self, event): if not self.sent: self.sent = True event.sender.send(Message(body="Hello World!")) def on_message(self, event): print(event.message.body) print("Releasing that message") self.release(event.delivery) def on_accepted(self, event): print("on_accepted") event.connection.close() def on_released(self, event): print("on_released") event.connection.close() def on_connection_closed(self, event): self.acceptor.close() Container(HelloWorld("localhost:8888/examples")).run()