@Override
protected AbstractBeanDefinition parseInternal(Element element, ParserContext parserContext) {
BeanDefinitionBuilder destinationBuilder = BeanDefinitionBuilder.genericBeanDefinition(DESTINATION_FACTORY_CLASS_NAME);
String brokerId = element.getAttribute(MESSAGE_BROKER_ATTR);
brokerId = StringUtils.hasText(brokerId) ? brokerId : BeanIds.MESSAGE_BROKER;
destinationBuilder.addPropertyReference(MESSAGE_BROKER_PROPERTY, brokerId);
ParsingUtils.mapOptionalAttributes(element, parserContext, destinationBuilder, CHANNELS_ATTR, SUBSCRIPTION_TIMEOUT_ATTR,
THROTTLE_INBOUND_FREQ_ATTR, THROTTLE_INBOUND_POLICY_ATTR, THROTTLE_OUTBOUND_FREQ_ATTR, THROTTLE_OUTBOUND_POLICY_ATTR, ALLOW_SUBTOPICS_ATTR,
CLUSTER_ROUTING_ATTR, CLUSTER_REF_ATTR, DISALLOW_WILDCARD_SUBTOPICS_ATTR, MESSAGE_TTL_ATTR, SEND_CONSTRAINT_ATTR, SUBSCRIBE_CONSTRAINT_ATTR, SUBTOPIC_SEPARATOR_ATTR);
parseAdapter(element, parserContext, destinationBuilder);
return destinationBuilder.getBeanDefinition();
}