private void autoBindDLQ(final String queueName, String routingKey, RabbitPropertiesAccessor properties) {
		if (logger.isDebugEnabled()) {
			logger.debug("autoBindDLQ=" + properties.getAutoBindDLQ(this.defaultAutoBindDLQ)
					+ " for: " + queueName);
		}
		if (properties.getAutoBindDLQ(this.defaultAutoBindDLQ)) {
			String prefix = properties.getPrefix(this.defaultPrefix);
			String dlqName = constructDLQName(queueName);
			Queue dlq = new Queue(dlqName);
			declareQueueIfNotPresent(dlq);
			final String dlxName = deadLetterExchangeName(prefix);
			final DirectExchange dlx = new DirectExchange(dlxName);
			declareExchangeIfNotPresent(dlx);
			this.rabbitAdmin.declareBinding(BindingBuilder.bind(dlq).to(dlx).with(routingKey));
		}
	}
If so requested, declare the DLX/DLQ and bind it. The DLQ is bound to the DLX with a routing key of the original
queue name because we use default exchange routing by queue name for the original message.
@param queueName The base queue name.
@param routingKey the routing key.
@param properties The properties accessor.
spring-xd-messagebus-rabbit/src/main/java/org/springframework/xd/dirt/integration/rabbit/RabbitMessageBus.java