the default exchange should not be implemented as just a regular direct exchange
Currently there are various places that queues are created [using the queue factory], which then require that a binding be performed to the default exchange, and in some cases this is not actually done (e.g. the createQueue JMX operation). The implementation of the default exchange should be updated such that it is not just a regular direct exchange (e.g. to prevent it having an MBean or at least a custom MBean, since no operations should actually be able to be performed on it given it is to just be a direct mapping to the available queues), and its bindings should be handled directly through the Queue factory to ensure they are applied uniformly across the broker.
Additionally, the current implementation of the default exchange has a name <<default>> when it should really be nameless, and it is possible to delete it (and amq.* exchanges) via the JMX interface as a result which it shouldnt be.