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()
方法调用获取所有失败消息的列表。
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()
方法调用获取所有失败消息的列表。