<div dir="ltr">On Monday, September 9, 2013 4:20:09 PM UTC-7, vitaly wrote:<blockquote class="gmail_quote" style="margin: 0;margin-left: 0.8ex;border-left: 1px #ccc solid;padding-left: 1ex;"><div dir="ltr"><span style="border-collapse:separate;color:rgb(0,0,0);font-family:Calibri;border-spacing:0px;font-size:medium"><span style="font-family:Calibri,sans-serif;font-size:14px"><div>I need to be able to spawn a consumer process for a queue when that queue becomes non-empty. The trigger needs to happen in an event-driven way, without polling, and without removing any messages from that queue. Is this possible with AMQP/RabbitMQ and how? &nbsp;I am coding in Python.</div><div><br></div><div>Thank you,</div><div>Vitaly</div></span></span></div></blockquote><div>The following reply was posted to the rabbitmq-discuss mailing list by Michael Laing:</div><div>==</div><div><div>To: Discussions about RabbitMQ &lt;rabbitmq-discuss@lists.rabbitmq.com&gt;</div><div>Message-ID:</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>&lt;CAKgmDnGcTdWhsdHN2hcGCTJmv8iUNa9dGfOVjD1CtHWU5bPQnw@mail.gmail.com&gt;</div><div>Content-Type: text/plain; charset="utf-8"</div><div><br></div><div>Why don't you just subscribe to that queue with basic.consume, acks on, and</div><div>a prefetch of 1</div><div><br></div><div>When you get a message, reject it and cancel your consumer (if your logic</div><div>calls for it).</div><div><br></div><div>The message will be at the front of the queue.</div><div><br></div><div>Then spawn your 'consumer process'. The message (and any others) will be</div><div>there waiting.</div><div><br></div><div>I use python pika async to do this sort of thing. Event driven, no polling.</div><div><br></div><div>If speed is important, use the tornado adapter; if you are feeling lucky,</div><div>use the libev adapter (full disclosure: I wrote it)</div><div><br></div><div>-ml</div></div><div>==</div></div>