You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot 3.0.2迁移:适配的SQSConnectionFactory版本咨询

Spring Boot 3.0.2 适配的SQS JMS版本及配置修正

核心问题原因

Spring Boot 3.x基于Jakarta EE 9规范,所有JMS相关API包名从javax.jms.*切换到了jakarta.jms.*。你当前使用的AWS SQS JMS 1.x/2.x旧版本依赖的是Java EE的javax.jms包,导致DefaultJmsListenerContainerFactory.setConnectionFactory()无法识别SQSConnectionFactory对象(类型不兼容)。

适配版本推荐

必须使用支持Jakarta JMS 3.0的AWS SQS JMS版本,同时建议同步升级AWS SDK到兼容版本:

  • SQS JMS版本:选择2.1.0及以上(从该版本开始官方支持Jakarta JMS 3.0)
  • AWS SDK版本:推荐迁移到AWS SDK v2(如2.20.0及以上),因为Spring Boot 3对SDK v2的适配更完善,且SDK v1已进入维护期

调整你的gradle.properties:

# 适配Jakarta的SQS JMS版本
sqsVersion=2.1.0
# AWS SDK v2核心版本
awsSdkVersion=2.20.0
# 同步升级其他AWS服务SDK版本
stsVersion=2.20.0
ssmVersion=2.20.0

# 保留原有其他配置
hibernateVersion=6.1.6.Final
secretsManagerJdbcVersion=1.0.5
secretsManagerCacheVersion=1.0.1
springdocOpenApiUiVersion=1.6.6

配置类代码修正

除了版本升级,还需要修改配置类的导入包,替换旧的javax.jms.Session为Jakarta版本:

import com.amazon.sqs.javamessaging.SQSConnectionFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jms.annotation.EnableJms;
import org.springframework.jms.config.DefaultJmsListenerContainerFactory;
import org.springframework.jms.support.destination.DynamicDestinationResolver;

// 替换为Jakarta的Session包
import jakarta.jms.Session;

@Configuration
@EnableJms
public class JmsConfiguration {

    @Bean
    public DefaultJmsListenerContainerFactory jmsListenerContainerFactory(SQSConnectionFactory connectionFactory) {
        DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
        // 此时SQSConnectionFactory已实现jakarta.jms.ConnectionFactory,可正常注入
        factory.setConnectionFactory(connectionFactory);
        factory.setDestinationResolver(new DynamicDestinationResolver());
        factory.setConcurrency("3-10");
        factory.setSessionAcknowledgeMode(Session.AUTO_ACKNOWLEDGE);
        return factory;
    }
}

额外注意点

  • 清理项目中所有残留的javax.jms相关依赖,避免包冲突
  • 如果仍需使用AWS SDK v1,需升级到1.12.500及以上版本(该版本开始支持Jakarta),但不推荐长期使用SDK v1
  • 验证所有JMS相关代码的导入包,确保统一使用jakarta.jms.*

内容的提问来源于stack exchange,提问作者Meherban

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 16:35:21