我一直在尝试从存储在 Amazon S3 上的视频中检测人脸,这些人脸必须与包含要在视频中搜索的人脸的集合进行匹配。 我使用过亚马逊VideoDetect。 我的一段代码是这样的:
CreateCollection createCollection = new CreateCollection(collection);
createCollection.makeCollection();
AddFacesToCollection addFacesToCollection = new AddFacesToCollection(collection, bucketName, image);
addFacesToCollection.addFaces();
VideoDetect videoDetect = new VideoDetect(video, bucketName, collection);
videoDetect.CreateTopicandQueue();
try {
videoDetect.StartFaceSearchCollection(bucketName, video, collection);
if (videoDetect.GetSQSMessageSuccess())
videoDetect.GetFaceSearchCollectionResults();
} catch (Exception e) {
e.printStackTrace();
return false;
}
videoDetect.DeleteTopicandQueue();
return true;
事情似乎工作正常,直到 StartFaceSearchCollection,我得到了一个正在制作的 jobId 和一个队列。但是,当它尝试四处获取 GetSQSMessageSuccess 时,它永远不会返回任何消息。 尝试获取消息的代码是:
ReceiveMessageRequest.Builder receiveMessageRequest = ReceiveMessageRequest.builder().queueUrl(sqsQueueUrl);
messages = sqs.receiveMessage(receiveMessageRequest.build()).messages();
它具有存在的正确 sqsQueueUrl。但我没有收到任何消息。 超时时它给了我这个异常:
software.amazon.awssdk.core.exception.SdkClientException: Unable to execute HTTP request: sqs.region.amazonaws.com
at software.amazon.awssdk.core.exception.SdkClientException$BuilderImpl.build(SdkClientException.java:97)
Caused by: java.net.UnknownHostException: sqs.region.amazonaws.com
那么除了 SQSMessage 之外,还有其他替代方法吗?我们可以通过其他方式跟踪/轮询 jobId 吗?或者我错过了什么??
最佳答案
使用有效 sqsQueueUrl 接收 SQS 消息的简单工作代码片段 for more
ReceiveMessageRequest receiveMessageRequest = new ReceiveMessageRequest(sqsQueueUrl);
final List<Message> messages = sqs.receiveMessage(receiveMessageRequest).getMessages();
for (final Message message : messages) {
System.out.println("Message");
System.out.println(" MessageId: " + message.getMessageId());
System.out.println(" ReceiptHandle: " + message.getReceiptHandle());
System.out.println(" MD5OfBody: " + message.getMD5OfBody());
System.out.println(" Body: " + message.getBody());
for (final Entry<String, String> entry : message.getAttributes().entrySet()) {
System.out.println("Attribute");
System.out.println(" Name: " + entry.getKey());
System.out.println(" Value: " + entry.getValue());
}
}
System.out.println();
关于java - 在 Amazon s3 上上传的视频中检测人脸时,SQSMessageSuccess 中没有响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59748783/