我具有以下用于连接的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);
}
}
答案 0 :(得分:1)
由于错误,我已经覆盖了AmazonSQSAsync bean
public AmazonSQSAsync amazonSQSClient() {
return new AmazonSQSAsyncClient();
}
这导致忽略了我添加的aws属性。因此SqsListner无法正常工作,因为无法明确指定aws属性,包括SqsListner的凭据。