SqsListener 在 Sprint Boot 3.3.0 中不起作用

问题描述 投票:0回答:1

我正在尝试将我的一项服务从 Spring Boot 2.7.x 升级到 Spring Boot 3.x

当前版本: 春季启动:3.3.0
爪哇:21
春季 AWS 云:3.1.1

不幸的是,@SqsListener 不起作用,我没有收到来自任何队列的任何消息。

build.gradle 文件看起来像这样

plugins {
    id 'java'
    id 'org.springframework.boot' version '3.3.0'
    id 'io.spring.dependency-management' version '1.1.5'
}

repositories {
    mavenCentral()
}

ext {
    set('springCloudVersion', "2023.0.1")
    set('springCloudAwsVersion','3.1.1')
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'io.awspring.cloud:spring-cloud-aws-starter'
    implementation 'io.awspring.cloud:spring-cloud-aws-starter-sqs'
}

dependencyManagement {
    imports {
        mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
        mavenBom "io.awspring.cloud:spring-cloud-aws-dependencies:${springCloudAwsVersion}"
    }
}

Java代码:

@SqsListener(value = "${sqs.queue}", acknowledgementMode = ON_SUCCESS)
public void consumeMessage(String payload) {
    doSomething(payload);
}

我还尝试创建 SqsAsyncClient 和 SqsMessageListenerContainerFactory 的 bean,尽管它们不是必需的,但我仍然无法接收有效负载。

@Bean
public SqsAsyncClient sqsAsyncClient() {
    return SqsAsyncClient.builder().region(Region.AP_SOUTH_1).build();
}

@Bean
public SqsMessageListenerContainerFactory<Object> defaultSqsListenerContainerFactory() {
  return SqsMessageListenerContainerFactory
                .builder()
                .sqsAsyncClient(sqsAsyncClient())
                .build();
}

我也尝试将 Spring Boot 降级到 3.2.5 但仍然是同样的问题。
我在这里缺少什么吗? 预先感谢。

java spring-boot amazon-sqs aws-sdk-java-2.0 sqslistener
1个回答
0
投票

我对 spring boot 版本 3.3.1 和 spring-cloud-aws-sqs 3.1.0 也有同样的问题

我在队列中发送了消息,但消费者什么也没收到

© www.soinside.com 2019 - 2024. All rights reserved.