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

Spring AWS SQS连接LocalStack提示队列不存在,AWS CLI可正常访问该队列

解决方案

该问题核心原因为Spring Cloud AWS仅传入队列名时,自动生成的队列URL与Localstack实际队列URL不匹配,可按以下步骤修复:

  • 方案1(最快生效):直接使用完整队列URL配置
    调整application.properties中的队列配置,将队列名替换为你调用CLI时使用的完整队列URL:

    aws.queues.event=http://localhost:4566/000000000000/EVENTS_DEV
    

    @SqsListener原生支持直接读取完整队列URL,无需修改其他代码。

  • 方案2(保留队列名配置):补充SQS客户端自定义配置
    你当前的配置类没有手动注入适配Localstack的SQS客户端,导致默认客户端构造队列URL规则不符合Localstack要求,在AWSConfig类中补充以下Bean即可:

    @Bean
    public AmazonSQSAsync amazonSQSAsync() {
        return AmazonSQSAsyncClientBuilder.standard()
            .withEndpointConfiguration(new AwsClientBuilder.EndpointConfiguration("http://localhost:4566", "sa-east-1"))
            .withCredentials(new AWSStaticCredentialsProvider(new BasicAWSCredentials("test", "test")))
            .build();
    }
    

    Localstack默认不需要校验真实凭证,此处accessKey和secretKey填任意非空值即可。

  • 额外校验项
    如果你使用的是Spring Cloud AWS 2.3及以上版本,原配置前缀cloud.aws.*已经废弃,需替换为spring.cloud.aws.*,避免配置不生效导致客户端默认请求公网AWS环境,自然无法找到本地创建的队列。

内容的提问来源于stack exchange,提问作者Renato Ramos Nascimento

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 15:39:04