【发布时间】:2018-07-17 08:39:56
【问题描述】:
@Async
public void scanFile() {
log.info("Start scanning");
String queueUrl = sqs.getQueueUrl("bucket-antivirus").getQueueUrl();
List<Message> messages = sqs.receiveMessage(new ReceiveMessageRequest()
.withQueueUrl(queueUrl)
.withWaitTimeSeconds(20))
.getMessages();
for (Message message : messages) {
try {
// move clear file to file bucket
}
...
log.info("Scanning complete");
}
}
当用户上传文件时,SQS 会收到一条消息。应用程序会将文件移动到新存储桶。
但即使我添加了 SQS 客户端的等待时间,我也无法获得最新消息。通过多次测试,我上传一个文件后,我只得到之前文件的消息。如何让 SQS 客户端等待最新消息/特定文件的消息?
【问题讨论】:
-
在相关注释上 - “当用户上传文件时,SQS 将收到一条消息。应用程序会将文件移动到新存储桶中。” -- 你为什么要为此通过 SQS? Cloudwatch Events 或 Lambda 可能更适合此特定流程
标签: java amazon-web-services asynchronous amazon-sqs