@Override
	public void bindProducer(final String name, MessageChannel moduleOutputChannel,
			Properties properties) {
		Assert.isInstanceOf(SubscribableChannel.class, moduleOutputChannel);
		if (name.startsWith(P2P_NAMED_CHANNEL_TYPE_PREFIX)) {
			validateProducerProperties(name, properties, SUPPORTED_NAMED_PRODUCER_PROPERTIES);
		}
		else {
			validateProducerProperties(name, properties, SUPPORTED_PRODUCER_PROPERTIES);
		}
		RedisPropertiesAccessor accessor = new RedisPropertiesAccessor(properties);
		if (!bindNewProducerDirectlyIfPossible(name, (SubscribableChannel) moduleOutputChannel, accessor)) {
			String partitionKeyExtractorClass = accessor.getPartitionKeyExtractorClass();
			Expression partitionKeyExpression = accessor.getPartitionKeyExpression();
			RedisQueueOutboundChannelAdapter queue;
			String queueName = "queue." + name;
			if (partitionKeyExpression == null && !StringUtils.hasText(partitionKeyExtractorClass)) {
				queue = new RedisQueueOutboundChannelAdapter(queueName, this.connectionFactory);
			}
			else {
				queue = new RedisQueueOutboundChannelAdapter(
						parser.parseExpression(buildPartitionRoutingExpression(queueName)), this.connectionFactory);
			}
			queue.setIntegrationEvaluationContext(this.evaluationContext);
			queue.setBeanFactory(this.getBeanFactory());
			queue.afterPropertiesSet();
			doRegisterProducer(name, moduleOutputChannel, queue, accessor);
		}
	}
Send the failed message to 'ERRORS:[name]'.
spring-xd-messagebus-redis/src/main/java/org/springframework/xd/dirt/integration/redis/RedisMessageBus.java