我尝试使用AWS-SDK Java实现自定义SqsListener,但他不关心withWaitTimeSeconds。
当我启动此代码时:
@Scheduled(fixedDelay = 100)
@Transactional
public void testSQS() {
try {
String fifoQueueUrl = "example_stack.fifo";
ReceiveMessageRequest receiveMessageRequest = new ReceiveMessageRequest(fifoQueueUrl)
.withWaitTimeSeconds(10)
.withMaxNumberOfMessages(10);
logger.info("START=" + LocalDateTime.now().toString());
List<Message> sqsMessages = amazonSQS.receiveMessage(receiveMessageRequest).getMessages();
logger.info("END=" + LocalDateTime.now().toString());
if (CollectionUtils.isEmpty(sqsMessages)) {
logger.info("empty");
}
} catch (Exception e) {
logger.error("Error.", e);
}
}
因为我在10秒时配置了WaitTimeSeconds,所以第一次通话需要10秒。 所以我的问题是为什么在我第一次调用receiveMessage()之后,它每次都不会等待10秒?
请参阅日志,您将看到他等待10秒钟,然后重试并返回空的邮件列表,而无需等待。
请参阅日志:
2019-02-08 10:05:42 - START=2019-02-08T15:05:42.859
2019-02-08 10:06:03 - END=2019-02-08T15:06:03.119
2019-02-08 10:06:03 - empty
Seconde Time:
2019-02-08 10:06:03 - START=2019-02-08T15:06:03.223
2019-02-08 10:06:23 - END=2019-02-08T15:06:23.181
2019-02-08 10:06:23 - empty
2019-02-08 10:06:23 - START=2019-02-08T15:06:23.284
2019-02-08 10:06:23 - END=2019-02-08T15:06:23.422
2019-02-08 10:06:23 - empty
3th time
2019-02-08 10:06:23 - START=2019-02-08T15:06:23.525
2019-02-08 10:06:43 - END=2019-02-08T15:06:43.255
2019-02-08 10:06:43 - empty
2019-02-08 10:06:43 - START=2019-02-08T15:06:43.358
2019-02-08 10:06:43 - END=2019-02-08T15:06:43.454
2019-02-08 10:06:43 - empty
2019-02-08 10:06:43 - START=2019-02-08T15:06:43.557
2019-02-08 10:06:43 - END=2019-02-08T15:06:43.557
2019-02-08 10:06:43 - empty
2019-02-08 10:06:43 - START=2019-02-08T15:06:43.659
2019-02-08 10:06:43 - END=2019-02-08T15:06:43.709
2019-02-08 10:06:43 - empty
2019-02-08 10:06:43 - START=2019-02-08T15:06:43.813
2019-02-08 10:07:03 - END=2019-02-08T15:07:03.354
2019-02-08 10:07:03 - empty
2019-02-08 10:07:03 - START=2019-02-08T15:07:03.455
2019-02-08 10:07:03 - END=2019-02-08T15:07:03.546
2019-02-08 10:07:03 - empty
2019-02-08 10:07:03 - START=2019-02-08T15:07:03.649
2019-02-08 10:07:03 - END=2019-02-08T15:07:03.650
2019-02-08 10:07:03 - empty
2019-02-08 10:07:03 - START=2019-02-08T15:07:03.755
2019-02-08 10:07:03 - END=2019-02-08T15:07:03.756
2019-02-08 10:07:03 - empty
2019-02-08 10:07:03 - START=2019-02-08T15:07:03.859
2019-02-08 10:07:03 - END=2019-02-08T15:07:03.860
2019-02-08 10:07:03 - empty
2019-02-08 10:07:03 - START=2019-02-08T15:07:03.963
2019-02-08 10:07:03 - END=2019-02-08T15:07:03.963
2019-02-08 10:07:03 - empty
2019-02-08 10:07:04 - START=2019-02-08T15:07:04.067
2019-02-08 10:07:04 - END=2019-02-08T15:07:04.067
2019-02-08 10:07:04 - empty
2019-02-08 10:07:04 - START=2019-02-08T15:07:04.169
2019-02-08 10:07:04 - END=2019-02-08T15:07:04.169
版本-> AWS-SDK 1.11.125
答案 0 :(得分:0)
我发现了问题。与具有spring-cloud-aws-messaging依赖关系的AmazonSQSAsyncClient发生冲突。
如果我创建自己的运行良好的AmazonSQS客户端bean。