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

问题描述:

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。AWS-SDK:SQS如何识别BatchDeleteOperation中未删除的邮件

如果发生错误或某些消息没有从队列中删除,err是否将包含MessageId的批次删除失败?

如果执行批量删除时部分成功,服务将返回200 OK,并且响应对象将具有两个字段“成功”和“失败”。

失败将具有包含消息ID和失败原因的“BatchResultErrorEntry”类型对象的列表。

+0

如何创建部分成功的方案并对其进行测试? –

+0

尝试在批量删除请求中发送无效的信息。 – Shibashis

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