protected synchronized MessageChannel doBindDynamicPubSubProducer(String name, String channelName,
			Properties properties) {
		MessageChannel channel = this.directChannelProvider.lookupSharedChannel(channelName);
		if (channel == null) {
			try {
				channel = this.directChannelProvider.createAndRegisterChannel(channelName);
				bindPubSubProducer(name, channel, properties);
			}
			catch (RuntimeException e) {
				destroyCreatedChannel(channelName, channel);
				throw new MessageBusException(
						"Failed to bind dynamic channel '" + name + "' with properties " + properties, e);
			}
		}
		return channel;
	}
Create a producer for the named channel and bind it to the bus. Synchronized to avoid creating multiple
instances.
@param name The name.
@param channelName The name of the channel to be created, and registered as bean.
@param properties The properties.
@return The channel.
spring-xd-messagebus-spi/src/main/java/org/springframework/xd/dirt/integration/bus/MessageBusSupport.java