AWS-SDK:SQS 如何识别未在 BatchDeleteOperation 中删除的消息

AWS-SDK: SQS How identify messages that were not deleted in 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。

万一出现错误或者有些消息没有从队列中删除,err是否会包含批量删除失败的MessageId??

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

Failed 将包含 "BatchResultErrorEntry" 类型的对象列表,其中包含消息 ID 和失败原因。

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