AWS-SDK:SQS如何识别BatchDeleteOperation中未删除的邮件

时间:2016-07-15 21:19:54

标签: amazon-web-services go amazon-sqs

deleteMessagesParams := &sqs.DeleteMessageBatchInput{
        Entries:  messagesToDelete, // array of type *sqs.DeleteMessageBatchRequestEntry
        QueueUrl: aws.String(QUEUE_URL),
}

if resp , err := svc.DeleteMessageBatch(deleteMessagesParams); err != nil {
    log.Println("Batch Delete Failed: ", err.Error())
}else{
     log.Println("Batch Delete Successful: ", resp)
}

我在SQS中使用批量删除。批量删除操作成功后,resp包含删除成功的MessageId消息。

如果出现错误或某些消息未从队列中删除,错误是否包含批处理删除失败的MessageId?

2 个答案:

答案 0 :(得分:1)

如果在执行批量删除时部分成功,则服务将返回200 ok,响应对象将有两个字段Successful和Failed。

失败将包含“BatchResultErrorEntry”类型的对象,其中包含消息ID和失败原因。

答案 1 :(得分:1)

您可以使用DeleteMessageBatchResult.getFailed()方法调用获取所有失败邮件的列表。