批量删除消息

最近更新时间:2023-08-11 09:59:50

接口描述

本接口(BatchDeleteMessage)用于批量(目前一次最多删除16条)删除已经被消费过的消息,消费者需将上次消费后得到的 ReceiptHandle 作为参数来定位要删除的消息。
本操作只有在 NextVisibleTime 之前执行才能成功;如果过了 NextVisibleTime,消息重新变回 Active 状态,ReceiptHandle 就会失效,删除失败,需重新消费获取新的 ReceiptHandle。并发消费时,如果消息被其中一个消费者删除了,其他的消费者再也无法获取得到被删除的消息。

  • 外网接口请求域名:https://cmq-queue-{$region}.api.qcloud.com
  • 内网接口请求域名:http://cmq-queue-{$region}.api.tencentyun.com

上述域名中的{$region}需用具体地域替换:gz(广州),sh(上海),bj(北京),shjr(上海金融),szjr(深圳金融),hk(中国香港),cd(成都),ca(北美),usw(美西),sg(新加坡)。公共参数中的 region 值要与域名的 region 值保持一致,如果出现不一致的情况,以域名的 region 值为准,将请求发往域名 region 所指定的地域。

注意:

任何时候(包括内测期间),如果使用外网域名产生公网下行流量,都会收取流量费用。 所以强烈建议服务在腾讯云上的用户使用内网域名,内网不会产生流量费用。

输入参数

以下请求参数列表仅列出了接口请求参数,其它参数见 公共请求参数 页面。

参数名称 是否必选 类型 描述
queueName String 队列名字,在单个地域同一账号下唯一。 队列名称是一个不超过64个字符的字符串,必须以字母为首字符,剩余部分可以包含字母、数字和横划线(-)。
receiptHandle.n String 上次消费消息时返回的消息句柄。为方便用户使用,n 从0开始或者从1开始都可以,但必须连续,例如删除两条消息,可以是(receiptHandle.0,receiptHandle.1),或者(receiptHandle.1, receiptHandle.2)。

输出参数

参数名称 类型 描述
code Int 0:表示成功,4420:达到最大 QPS 限制,4440:队列不存在,6010:删除消息部分失败,6020:删除消息全部失败,其他返回值的含义可以参考 错误码
message String 错误提示信息。
requestId String 服务器生成的请求 ID。出现服务器内部错误时,用户可提交此 ID 给后台定位问题。
errorList Array 无法成功删除的错误列表。每个元素列出了消息无法成功被删除的错误及原因。

errorList 定义如下:

参数名称 类型 描述
code Int 0:表示成功,others:错误,详细错误见 公共错误码
message String 错误提示信息。
receiptHandle String 对应删除失败的消息句柄。

错误码

请查看 公共错误码

示例

输入:

 https://domain/v2/index.php?Action=BatchDeleteMessage
 &queueName=test-queue-123
 &receiptHandle.1=3423452345
 &receiptHandle.1=4364564575
 &<公共请求参数>

输出(全部成功时):

{
"code" : 0,
"message" : "",
"requestId":"14534664555"
}

输出(部分失败时):

{
"code" : 6010,
"message" : "delete message partially failed",
"requestId":"14534664555",
"errorList":
[
{
"code" : 4430,
"message" : "invalid receiptHandle",
"receiptHandle":"4364564575"
}
]
}