Hi,<div><br></div><div>I'm using JAVA client for RabbitMQ (com.rabbitmq:amqp-client:2.8.1) to write a "jar component" capable of sending messages for some legacy system. The idea is to wrap all code that maintain the connection inside my component. This way, the client software deals only with very simple methods like "post" and is not aware of any connection handling. The connect/reconnect code is written and hidden from the legacy system.</div><div><br></div><div>The problem I have faced is that Java client creates "behind the scene" some threads to manage connection - like:</div><div>&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;lines 299-301 of&nbsp;AMQConnection class.<br></div><div><div>&nbsp; &nbsp; &nbsp; &nbsp; // start the main loop going</div><div>&nbsp; &nbsp; &nbsp; &nbsp; new MainLoop("AMQP Connection " + getHostAddress() + ":" + getPort()).start();</div><div>&nbsp; &nbsp; &nbsp; &nbsp; // after this point clear-up of MainLoop is triggered by closing the frameHandler.</div></div><div><br></div><div>Unfortunatelly, those threads aren't "daemon" threads. So, when main application ends and&nbsp;appropriate&nbsp;connection closing not occurs, the VM won't terminate. My&nbsp;approach&nbsp;was to add some shutdown hook to close RabbitMQ connections if it is live inside my "jar component". But, due to those non-daemon threads, VM is not going ever to be terminated and shutdown hooks fired.</div><div><br></div><div>It is a question to RabbitMQ driver developers, if the internal threads could be fired as daemon threads, could it be done in future releases?</div>