Source:
public final Binding<MessageChannel> doBindConsumer(String name, String group, MessageChannel inputChannel, final C properties) throws BinderException { MessageProducer consumerEndpoint = null; try { ConsumerDestination destination = this.provisioningProvider .provisionConsumerDestination(name, group, properties); if (HeaderMode.embeddedHeaders.equals(properties.getHeaderMode())) { enhanceMessageChannel(inputChannel); } consumerEndpoint = createConsumerEndpoint(destination, group, properties); consumerEndpoint.setOutputChannel(inputChannel); applyBeanPostProcessors(consumerEndpoint, name); this.consumerCustomizer.configure(consumerEndpoint, name, group); if (consumerEndpoint instanceof InitializingBean) { ((InitializingBean) consumerEndpoint).afterPropertiesSet(); } if (properties.isAutoStartup() && consumerEndpoint instanceof Lifecycle) { ((Lifecycle) consumerEndpoint).start(); } Binding<MessageChannel> binding = new DefaultBinding<MessageChannel>(name, group, inputChannel, consumerEndpoint instanceof Lifecycle ? (Lifecycle) consumerEndpoint : null) { @Override public Map<String, Object> getExtendedInfo() { return doGetExtendedInfo(destination, properties); } @Override public boolean isInput() { return true; } @Override protected void afterUnbind() { try { if (getEndpoint() instanceof DisposableBean) { ((DisposableBean) getEndpoint()).destroy(); } } catch (Exception e) { AbstractMessageChannelBinder.this.logger.error( "Exception thrown while unbinding " + toString(), e); } afterUnbindConsumer(destination, this.group, properties); destroyErrorInfrastructure(destination, this.group, properties); } }; doPublishEvent(new BindingCreatedEvent(binding)); return binding; } catch (Exception e) { if (consumerEndpoint instanceof Lifecycle) { ((Lifecycle) consumerEndpoint).stop(); } if (e instanceof BinderException) { throw (BinderException) e; } else if (e instanceof ProvisioningException) { throw (ProvisioningException) e; } else { throw new BinderException("Exception thrown while starting consumer: ", e); } } }

Target:
public final Binding<MessageChannel> doBindConsumer(String name, String group, MessageChannel inputChannel, final C properties) throws BinderException { MessageProducer consumerEndpoint = null; try { ConsumerDestination destination = this.provisioningProvider .provisionConsumerDestination(name, group, properties); if (HeaderMode.embeddedHeaders.equals(properties.getHeaderMode())) { enhanceMessageChannel(inputChannel); } consumerEndpoint = createConsumerEndpoint(destination, group, properties); consumerEndpoint.setOutputChannel(inputChannel); this.consumerCustomizer.configure(consumerEndpoint, name, group); applyInitializeBean(consumerEndpoint, "consumer." + groupedName(name, group)); if (properties.isAutoStartup() && consumerEndpoint instanceof Lifecycle) { ((Lifecycle) consumerEndpoint).start(); } Binding<MessageChannel> binding = new DefaultBinding<MessageChannel>(name, group, inputChannel, consumerEndpoint instanceof Lifecycle ? (Lifecycle) consumerEndpoint : null) { @Override public Map<String, Object> getExtendedInfo() { return doGetExtendedInfo(destination, properties); } @Override public boolean isInput() { return true; } @Override protected void afterUnbind() { try { if (getEndpoint() instanceof DisposableBean) { ((DisposableBean) getEndpoint()).destroy(); } } catch (Exception e) { AbstractMessageChannelBinder.this.logger.error( "Exception thrown while unbinding " + toString(), e); } afterUnbindConsumer(destination, this.group, properties); destroyErrorInfrastructure(destination, this.group, properties); } }; doPublishEvent(new BindingCreatedEvent(binding)); return binding; } catch (Exception e) { if (consumerEndpoint instanceof Lifecycle) { ((Lifecycle) consumerEndpoint).stop(); } if (e instanceof BinderException) { throw (BinderException) e; } else if (e instanceof ProvisioningException) { throw (ProvisioningException) e; } else { throw new BinderException("Exception thrown while starting consumer: ", e); } } }