<div dir="ltr"><div>(I know this is Pika, rather than specifically RabbitMQ, but figure there&#39;s a broader audience here.)</div><div><br></div>In our architecture, I&#39;m investigating moving away from polling with basic_get, and towards using basic_consume.<div>
<br></div><div>However, our twist is that our overall design doesn&#39;t just let us call connection.io.loop.start() and handle all our messages inside the registered handler like all the example code does.</div><div><br>
</div><div>What I&#39;d like to do is something like the following, but I can&#39;t quite figure out the combination of calls/callbacks to make it work.</div><div><br></div><div>Goals:</div><div><ul><li>Create a &quot;blocking&quot; routine that either returns a message or &quot;None&quot; if the whole system is shutting down:<br>
</li><li>Let the broker push 1 message/time to us, rather than us polling via basic_get.<br></li></ul></div><div><br></div><div>Here&#39;s my admittedly incomplete thoughts on how this might work:</div><div><ul><li>Create a SelectConnection instance<br>
</li><li>In the blocking read logic, use basic_consume to tell the broker it&#39;s OK to send a message to us now (prefetch=1).<br></li><li>call connection.ioloop.start()</li><li>In the message handler, save off the message, then send a basic_cancel to tell the broker &quot;No more for now, thanks!&quot;<br>
</li><li>The connection.ioloop.start() returns to the caller</li><li>Return the saved message to the caller.</li><li>Wash, rinse, repeat...</li></ul></div><div>Is this sane? Are there examples of how I might do this?</div>
<div><br></div><div>Thanks,</div><div><br>Matt</div></div>