String errorHandlerBeanName = containerEle.getAttribute(ERROR_HANDLER_ATTRIBUTE);
if (StringUtils.hasText(errorHandlerBeanName)) {
containerDef.getPropertyValues().add("errorHandler", new RuntimeBeanReference(errorHandlerBeanName));
}
AcknowledgeMode acknowledgeMode = parseAcknowledgeMode(containerEle, parserContext);
if (acknowledgeMode != null) {
containerDef.getPropertyValues().add("acknowledgeMode", acknowledgeMode);
}
String transactionManagerBeanName = containerEle.getAttribute(TRANSACTION_MANAGER_ATTRIBUTE);
if (StringUtils.hasText(transactionManagerBeanName)) {
containerDef.getPropertyValues().add("transactionManager",
new RuntimeBeanReference(transactionManagerBeanName));
}
String concurrency = containerEle.getAttribute(CONCURRENCY_ATTRIBUTE);
if (StringUtils.hasText(concurrency)) {
containerDef.getPropertyValues().add("concurrentConsumers", new TypedStringValue(concurrency));
}
String maxConcurrency = containerEle.getAttribute(MAX_CONCURRENCY_ATTRIBUTE);
if (StringUtils.hasText(maxConcurrency)) {
containerDef.getPropertyValues().add("maxConcurrentConsumers", new TypedStringValue(maxConcurrency));
}
String minStartInterval = containerEle.getAttribute(MIN_START_INTERVAL_ATTRIBUTE);
if (StringUtils.hasText(minStartInterval)) {
containerDef.getPropertyValues().add("startConsumerMinInterval", new TypedStringValue(minStartInterval));
}
String minStopInterval = containerEle.getAttribute(MIN_STOP_INTERVAL_ATTRIBUTE);
if (StringUtils.hasText(minStopInterval)) {
containerDef.getPropertyValues().add("stopConsumerMinInterval", new TypedStringValue(minStopInterval));
}
String minConsecutiveMessages = containerEle.getAttribute(MIN_CONSECUTIVE_ACTIVE_ATTRIBUTE);
if (StringUtils.hasText(minConsecutiveMessages)) {
containerDef.getPropertyValues().add("consecutiveActiveTrigger", new TypedStringValue(minConsecutiveMessages));
}
String minConsecutiveIdle = containerEle.getAttribute(MIN_CONSECUTIVE_IDLE_ATTRIBUTE);
if (StringUtils.hasText(minConsecutiveIdle)) {
containerDef.getPropertyValues().add("consecutiveIdleTrigger", new TypedStringValue(minConsecutiveIdle));
}
String prefetch = containerEle.getAttribute(PREFETCH_ATTRIBUTE);
if (StringUtils.hasText(prefetch)) {
containerDef.getPropertyValues().add("prefetchCount", new TypedStringValue(prefetch));
}
String receiveTimeout = containerEle.getAttribute(RECEIVE_TIMEOUT_ATTRIBUTE);
if (StringUtils.hasText(receiveTimeout)) {
containerDef.getPropertyValues().add("receiveTimeout", new TypedStringValue(receiveTimeout));
}
String channelTransacted = containerEle.getAttribute(CHANNEL_TRANSACTED_ATTRIBUTE);
if (StringUtils.hasText(channelTransacted)) {
// Note: a placeholder will pass this test, but if it resolves to true, it will be caught during container initialization
if (acknowledgeMode.isAutoAck() && channelTransacted.equalsIgnoreCase("true")) {
parserContext.getReaderContext().error(
"Listener Container - cannot set channel-transacted with acknowledge='NONE'", containerEle);
}
containerDef.getPropertyValues().add("channelTransacted", new TypedStringValue(channelTransacted));
}