<div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div class="im"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
One can pass the same consumer instance to multiple BasicConsume calls. Then the messages end up in just a single client-side queue.</blockquote></div><div class="im"><br></div></blockquote><div> </div><div>Right, but then messages from both RMQ queues get lumped into the same client-side queue and processed the same by the consumer.  EventingBasicConsumer provides the callback-based interface I was looking for that provides a clear and easy to read mechanism for subscribing different processing functions to different queues in a single-thread.</div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div class="im">Alas the risk of consumer code blocking the connection thread remains.</div></blockquote><div>
<br></div><div>That&#39;s true of any callback-based code (as are most of the other language AMQP clients), and it&#39;s not that hard to design for.</div><div><br></div><div>-J</div></div>