首页 > 解决方案 > SqsListner 不听消息

问题描述

我有以下 application.properties 用于连接:

cloud.aws.credentials.instanceProfile=true
cloud.aws.credentials.useDefaultAwsCredentialsChain=true
cloud.aws.region.static=us-east-2
cloud.aws.stack.auto=false

我已经使用 SqsListner 编写了侦听器并使用以下依赖项运行我的应用程序

 <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-aws-messaging</artifactId>
            <version>1.2.4.RELEASE</version>
        </dependency>
 <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
            <version>1.4.3.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-aws-messaging</artifactId>
            <version>2.1.2.RELEASE</version>
        </dependency>

但不知何故,我的听众没有在听消息(我在现有的代码库中这样做)。

我尝试创建一个单独的 Spring Boot 应用程序,其中只有侦听器,它工作正常。但是当添加到现有代码中时,同样的事情不起作用

监听器代码如下:

@SqsListener(value = "test-queue",deletionPolicy = ON_SUCCESS)
public void receiveMessage(String message,
    @Header(X_REQUEST_ID) String xRequestId,
    @Header(X_SESSION_ID) String xSessionId) {
    LOGGER.info("message received is: {}", message);

    }
}

标签: amazon-sqs

解决方案


我错误地覆盖了 AmazonSQSAsync bean

public AmazonSQSAsync amazonSQSClient() {
        return new AmazonSQSAsyncClient();
    }

这导致忽略了我添加的 aws 属性。因此 SqsListner 无法正常工作,因为无法明确指定 aws 属性,包括 SqsListner 的凭据。


推荐阅读