Skip to content

Commit 7fa61fa

Browse files
committed
feat: SqsMessageDrivenChannelAdapterParser
1 parent 588df8c commit 7fa61fa

File tree

2 files changed

+49
-1
lines changed

2 files changed

+49
-1
lines changed
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
package org.springframework.integration.aws.config.xml;
2+
3+
import org.springframework.beans.factory.support.AbstractBeanDefinition;
4+
import org.springframework.beans.factory.xml.ParserContext;
5+
import org.springframework.integration.aws.inbound.SqsMessageDrivenChannelAdapter;
6+
import org.springframework.integration.config.xml.AbstractChannelAdapterParser;
7+
import org.w3c.dom.Element;
8+
9+
public class SqsMessageDrivenChannelAdapterParser extends AbstractChannelAdapterParser {
10+
11+
@Override
12+
protected AbstractBeanDefinition doParse(Element element, ParserContext parserContext, String channelName) {
13+
return XmlBeanDefinitionBuilder.newInstance(element, parserContext, SqsMessageDrivenChannelAdapter.class)
14+
.addConstructorArgReference("sqs")
15+
.addConstructorArgValue("queues")
16+
.setPropertyIfAttributeDefined("send-timeout")
17+
.setPropertyIfAttributeDefined("error-channel", "errorChannelName")
18+
.setPropertyReferenceIfAttributeDefined("destination-resolver", "channelResolver")
19+
.getBeanDefinitionBuilder()
20+
.addPropertyValue("outputChannelName", channelName)
21+
.addPropertyValue("sqsContainerOptions", sqsContainerOptions(element, parserContext))
22+
.getBeanDefinition();
23+
}
24+
25+
private AbstractBeanDefinition sqsContainerOptions(Element element, ParserContext parserContext) {
26+
return XmlBeanDefinitionBuilder.newInstance(element, parserContext, SqsContainerOptionsFactoryBean.class)
27+
.setPropertyReferenceIfAttributeDefined("components-task-executor")
28+
.setPropertyReferenceIfAttributeDefined("message-converter")
29+
.setPropertyIfAttributeDefined("acknowledgement-interval")
30+
.setPropertyIfAttributeDefined("acknowledgement-mode")
31+
.setPropertyIfAttributeDefined("acknowledgement-ordering")
32+
.setPropertyIfAttributeDefined("acknowledgement-threshold")
33+
.setPropertyIfAttributeDefined("back-pressure-mode")
34+
.setPropertyIfAttributeDefined("fifo-batch-grouping-strategy")
35+
.setPropertyIfAttributeDefined("listener-mode")
36+
.setPropertyIfAttributeDefined("listener-shutdown-timeout")
37+
.setPropertyIfAttributeDefined("max-concurrent-messages")
38+
.setPropertyIfAttributeDefined("max-delay-between-polls")
39+
.setPropertyIfAttributeDefined("max-messages-per-poll")
40+
.setPropertyIfAttributeDefined("message-visibility")
41+
.setPropertyIfAttributeDefined("poll-timeout")
42+
.setPropertyIfAttributeDefined("queue-not-found-strategy")
43+
.getBeanDefinitionBuilder()
44+
.applyCustomizers(bean -> bean.setAutowireCandidate(false))
45+
.getBeanDefinition();
46+
}
47+
}
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
kcl-message-driven-channel-adapter: org.springframework.integration.aws.config.xml.KclMessageDrivenChannelAdapterParser
22
kinesis-message-driven-channel-adapter: org.springframework.integration.aws.config.xml.KinesisMessageDrivenChannelAdapterParser
33
kinesis-outbound-channel-adapter: org.springframework.integration.aws.config.xml.KinesisOutboundChannelAdapterParser
4-
kpl-outbound-channel-adapter: org.springframework.integration.aws.config.xml.KplOutboundChannelAdapterParser
4+
kpl-outbound-channel-adapter: org.springframework.integration.aws.config.xml.KplOutboundChannelAdapterParser
5+
sqs-message-driven-channel-adapter: org.springframework.integration.aws.config.xml.SqsMessageDrivenChannelAdapterParser

0 commit comments

Comments
 (0)