@Override
 public void bindConsumer(
     final String name, MessageChannel moduleInputChannel, Properties properties) {
   if (logger.isInfoEnabled()) {
     logger.info("declaring queue for inbound: " + name);
   }
   if (name.startsWith(P2P_NAMED_CHANNEL_TYPE_PREFIX)) {
     validateConsumerProperties(name, properties, SUPPORTED_NAMED_CONSUMER_PROPERTIES);
   } else {
     validateConsumerProperties(name, properties, SUPPORTED_CONSUMER_PROPERTIES);
   }
   RabbitPropertiesAccessor accessor = new RabbitPropertiesAccessor(properties);
   String queueName = applyPrefix(accessor.getPrefix(this.defaultPrefix), name);
   int partitionIndex = accessor.getPartitionIndex();
   if (partitionIndex >= 0) {
     queueName += "-" + partitionIndex;
   }
   Map<String, Object> args = queueArgs(accessor, queueName);
   Queue queue = new Queue(queueName, true, false, false, args);
   declareQueueIfNotPresent(queue);
   autoBindDLQ(name, accessor);
   doRegisterConsumer(name, moduleInputChannel, queue, accessor, false);
   bindExistingProducerDirectlyIfPossible(name, moduleInputChannel);
 }