分布式消息服务 DMS分布式消息服务 DMS

更新时间:2021/06/16 GMT+08:00
分享

确认已消费指定消息

功能介绍

确认已经消费指定消息。

在消费者消费消息期间,消息仍然停留在队列中,但消息从被消费开始的30秒内不能被该消费组再次消费,若在这30秒内没有被消费者确认消费,则DMS认为消息未消费成功,将可以被继续消费。

如果消息被确认消费成功,消息将不能被该消费组再次消费,但是消息仍然保持在队列中,并且可以被其它消费组消费,消息在队列中的保留时间默认为72小时(除非队列被删除),72小时后会被删除。

消息批量消费确认时,必须严格按照消息消费的顺序提交确认,DMS按顺序判定消息是否消费成功,如果某条消息未确认或消费失败,则不再继续检测,默认后续消息全部消费失败。建议当对某一条消息处理失败时,不再需要继续处理本批消息中的后续消息,直接对已正确处理的消息进行确认。

确认消费失败后,可以再次重新消费和确认。当开启死信时,消息进行多次重复消费仍然失败后,DMS会将该条消息转存到死信队列中,有效期为72小时,用户可以根据需要对死信消息进行重新消费。

调试

您可以在API Explorer中调试该接口。

URI

POST /v2/{project_id}/queues/{queue_id}/groups/{consumer_group_id}/ack

表1 路径参数

参数

是否必选

参数类型

描述

project_id

String

项目ID。

queue_id

String

队列ID。

consumer_group_id

String

消费组ID。

请求参数

表2 请求Body参数

参数

是否必选

参数类型

描述

message

Array<Object>

确认消息数组。

表3 message

参数

是否必选

参数类型

描述

handler

String

消费时返回的ID。

status

String

客户端处理数据的状态。 取值为“success”或者“fail”。

响应参数

状态码: 200

表4 响应Body参数

参数

参数类型

描述

success

Integer

确认成功的数目(如果为N,则表示前N条消息确认成功)。

fail

Integer

确认失败的数目(如果为N,则表示后N条消息确认失败)。

请求示例

POST https://{endpoint}/v2/{project_id}/queues/{queue_id}/groups/{consumer_group_id}/ack

{
  "message" : [ {
    "handler" : "eyJjb25zdW1lckdyb3VwIjoibXFzX2NvbnN1bWVyXzMiLCJjb25zdW1lckluc3RhbmNlIjoicmVzdC1jb25zdW1lci1hMWM5YTRlMy1mNTY5LTQyYTgtOTQ1Ni1hYmU0NDVmZjUxYzkiLCJjb3VudCI6MSwib2Zmc2V0IjowLCJvZmZzZXRJbmRleCI6LTEsInBhcnRpdGlvbiI6MiwidG9waWMiOiJxLWI3OGE5MGFlMmExMzRiNGI4YjJiYTMwYWNhYjRlMjNhLTA3NWFlN2RhLTZjZTUtNDk2Ni05NDBjLTE3YzE5ZmI1MTc1ZSJ9",
    "status" : "success"
  } ]
}

响应示例

状态码: 200

消息确认成功。

{
  "success" : 1,
  "fail" : 2
}

状态码

状态码

描述

200

消息确认成功。

错误码

请参见错误码

分享:

    相关文档

    相关产品