I'm trying to setup RabbitMQ RPC in a web project (like suggested in <a href="http://www.rabbitmq.com/tutorials/tutorial-six-java.html">tutorial 6</a>). It works as intended, but when I try to shutdown Tomcat, the shutdown hangs as soon as I have created a consumer listening to the rpc response.&nbsp;<div><br></div><div>jstack and some debugging learned me that for each created consumer, a thread is created. And those threads are preventing Tomcat from shutting down (as they are not managed by Tomcat).</div><div><br></div><div>Looking at <font face="courier new, monospace">ConsumerWorkService</font>, there is a method <font face="courier new, monospace">addWork</font>, which creates a new <font face="courier new, monospace">WorkPoolRunnable</font> and if I have understood it correctly, those Runnable's are only stopped when the 'key', being the channel is stopped.</div><div><br></div><div>I find that a bit odd.. I would expect that when I call&nbsp;<font face="courier new, monospace">stub.channel.basicCancel(consumer.getConsumerTag()); </font><font face="arial, sans-serif">the runnable for the consumer is removed.&nbsp;</font></div><div><font face="arial, sans-serif"><br></font></div><div><font face="arial, sans-serif">Or am I completely&nbsp;wrong about my findings and is something else going on?</font></div>