<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; color: rgb(0, 0, 0); font-size: 14px; font-family: Calibri, sans-serif; "><div>Just trying to figure out if this should work so that I can stop beating my head against the wall. &nbsp;And apologies for posting here, but I couldn&#8217;t find a forum dedicated to Pika to post to.</div><div><br></div><div>Our app is such that the asynchronous processing model doesn't work for us. We want to reliably pull one message at a time off the queue, process it, acknowledge it, and be done with it.</div><div><br></div><div>Towards this end, we're using a very simple setup using BlockingConnection, basic_publish, basic_get and basic_ack. We're also using tx_select and tx_confirm to guarantee messages are safely in the broker. However, given what I've been reading, it seems like the RabbitMQ folks are strongly trying to get folks off of transactions and on to publisher-confirms.</div><div><br></div><div>While I have strong concerns about message loss because of client crashes, I'm nonetheless trying to experiment with publisher-confirms to see if they work at all in our scenario.</div><div><br></div><div>And this is where I hit the wall. I can't get publisher-confirm callbacks to work. The callback is never called. Is this expected to work?</div><div><br></div><div>Given a working example (without publisher-confirms), I've modified it as follows:</div><div><br></div><div><div>&nbsp; &nbsp; &nbsp; &nbsp; self.channel = self.connection.channel()</div><div>&nbsp; &nbsp; &nbsp; &nbsp; self.channel.confirm_delivery(publisher_confirm,)</div></div><div><br></div><div>...</div><div><div>&nbsp; &nbsp; def write_message(self, queue_name, json_string):</div><div>&nbsp; &nbsp; &nbsp; &nbsp; self.channel.basic_publish(exchange='',</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; routing_key=queue_name,</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; body=json_string,</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; properties=pika.BasicProperties(delivery_mode=2))</div><div><br></div><div>&nbsp; &nbsp; def publisher_confirm(frame):</div><div>&nbsp; &nbsp; &nbsp; &nbsp; print "Got the message!"</div></div><div><br></div><div>My publisher_confirm() method is never called. And by putting breakpoints at strategic points inside the Pika client library, I don't ever see any data coming back from the server that would result in callbacks, despite my writing 1000s messages/sec.</div><div><br></div><div>Thanks for any insight folks have,</div><div><br></div><div>Matt</div></body></html>