The Queue.Purge method simply discards messages (as it should) without sending them to an alternate exchange, even if one is configured for the queue.
There are cases where it is desirable to take messages from a queue and re-route them through an exchange. In this case, a new method (Queue.Reroute) should be added. The proposed spec for this method follows:
<method name="reroute" desc="Remove all or some messages on this queue and route them to an exchange">
<arg name="request" dir="I" type="uint32" desc="0 for all messages or n>0 for n messages"/>
<arg name="useAltExchange" dir="I" type="bool" desc="Iff true, use the queue's configured alternate exchange;
iff false, use exchange named in the 'exchange' argument"/>
<arg name="exchange" dir="I" type="sstr" desc="Name of the exchange to route the messages through"/>
This method allows for messages to be sent to the alternate exchange (if configured) or to an exchange specified by the caller.