Reputation: 347
I am trying to migrate one of my microservice from Spring Boot 2.7.x to Spring Boot 3.2.x.
Currently I am planning to use:
Included dependencies in my gradle file
implementation 'io.awspring.cloud:spring-cloud-aws-starter'
implementation 'io.awspring.cloud:spring-cloud-aws-starter-sqs'
and I have few listeners in my service for which I am using @SqsListener
@SqsListener(value = "${custom.queue}", acknowledgementMode = ON_SUCCESS)
public void queuelistener(String requestPayload) {
try {
processData(requestPayload);
} catch (Exception e) {
log.error("Exception occured in request", e.getMessage());
}
}
One of the listener is for a FIFO queue and remaining listeners are for Standard Queues.
When I am trying to start my application I am getting an error that "SqsMessageListenerContainer must contain either all FIFO or all Standard queues"
org.springframework.context.ApplicationContextException: Failed to start bean 'io.awspring.cloud.messaging.internalEndpointRegistryBeanName'
at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:291)
at org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.start(DefaultLifecycleProcessor.java:471)
at java.base/java.lang.Iterable.forEach(Iterable.java:75)
at org.springframework.context.support.DefaultLifecycleProcessor.startBeans(DefaultLifecycleProcessor.java:260)
at org.springframework.context.support.DefaultLifecycleProcessor.onRefresh(DefaultLifecycleProcessor.java:205)
at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:981)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:627)
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146)
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:754)
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:456)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:334)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1354)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1343)
at com.rubix.crawler.CrawlerServiceApplication.main(CrawlerServiceApplication.java:12)
Caused by: java.util.concurrent.CompletionException: java.lang.IllegalArgumentException: SqsMessageListenerContainer must contain either all FIFO or all Standard queues.
at java.base/java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:315)
at java.base/java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:320)
at java.base/java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1807)
at java.base/java.lang.Thread.run(Thread.java:1583)
Caused by: java.lang.IllegalArgumentException: SqsMessageListenerContainer must contain either all FIFO or all Standard queues.
at org.springframework.util.Assert.isTrue(Assert.java:111)
at io.awspring.cloud.sqs.listener.SqsMessageListenerContainer.createDefaultComponentFactories(SqsMessageListenerContainer.java:125)
at io.awspring.cloud.sqs.listener.AbstractPipelineMessageListenerContainer.getComponentFactories(AbstractPipelineMessageListenerContainer.java:110)
at io.awspring.cloud.sqs.listener.AbstractPipelineMessageListenerContainer.determineComponentFactory(AbstractPipelineMessageListenerContainer.java:100)
at io.awspring.cloud.sqs.listener.AbstractPipelineMessageListenerContainer.doStart(AbstractPipelineMessageListenerContainer.java:91)
at io.awspring.cloud.sqs.listener.AbstractMessageListenerContainer.start(AbstractMessageListenerContainer.java:287)
at io.awspring.cloud.sqs.LifecycleHandler.lambda$manageLifecycle$4(LifecycleHandler.java:76)
at java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:1024)
at java.base/java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:762)
at io.awspring.cloud.sqs.LifecycleHandler.manageLifecycle(LifecycleHandler.java:74)
at io.awspring.cloud.sqs.LifecycleHandler.lambda$manageLifecycle$0(LifecycleHandler.java:81)
at java.base/java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1804)
... 1 common frames omitted
Is there anyway to configure SqsMessageListenerContainer to have listeners for both types of queues.
Thanks in advance.
Upvotes: 0
Views: 240