升级Spring AWS依赖后sqsMessageListenerContainerFactory Bean创建失败求助
问题解决方案:BeanCreationException无法实例化SqsMessageListenerContainerFactory
问题根源
启动报错找不到org.springframework.retry.backoff.BackOffPolicyBuilder类,是因为Spring Cloud AWS 3.x版本的SQS starter默认未引入Spring Retry依赖,但SQS消息监听容器工厂的默认配置依赖该类实现重试逻辑,导致Bean实例化失败。
可行解决方案
方案1:补充Spring Retry依赖
在Maven的pom.xml中添加Spring Retry依赖:
<dependency> <groupId>org.springframework.retry</groupId> <artifactId>spring-retry</artifactId> </dependency>
版本无需手动指定,Spring Boot的依赖管理会自动匹配对应兼容版本(比如Spring Boot 2.7.x对应spring-retry 1.3.x)。
方案2:禁用容器工厂的重试逻辑(适用于无需重试的业务场景)
修改SQSConfig中的容器工厂配置方法,显式关闭重试:
@Bean public SqsMessageListenerContainerFactory sqsMessageListenerContainerFactory(SqsAsyncClient sqsAsyncClient){ return SqsMessageListenerContainerFactory.builder() .configure(options -> { options.maxMessagesPerPoll(10); // 禁用重试配置,避免依赖Spring Retry类 options.retry(null); }) .sqsAsyncClient(sqsAsyncClient).build(); }
验证
执行上述任一方案后,重新启动应用,BeanCreationException异常即可消除。
内容的提问来源于stack exchange,提问作者Lingamoorthy Nandyala
相关产品推荐
相关产品推荐

