Synchronous publish in python ?
what is the easiest, most clean code to publish ONE guaranteed message in python and only proceed after the ACK from the broker has arrived ?
(I know, that this usage pattern is not performant, if I have many messages to publish. My use is different).
Hey @uherbst if you want to only wait for an ack from the broker that it received the message you can simply use
publish_await_acknowledgementand you can use it as follows:
was this what you were looking for?0
Just thought I'd post up my suggestion here for consideration: if looking to publish just one message, wait for confirm, and then disconnect, why not use the REST Messaging API? Just
POSTyour message to the broker on the correct REST port (default 9000), with the topic as the URL, and the body as the payload. When you get the 200 OK, you know it's been successfully received by the broker. This just seems easier than creating a connection, waiting for connection, publishing message, waiting for acknowledgement, then disconnecting.
Note: using a message broker for "one at a time" messaging is kind of an anti-pattern. As setting up the connection (TCP, TLS, etc.) is kind of expensive. Typically an app would connect, stay connected, and do lots of pubbing and subbing during its lifetime.1