TDMQ CMQ 版目前支持 Java、Python、PHP 及 C++ SDK,后续会支持更多语言。欢迎广大开发者根据 API 说明开发更多语言版本的 SDK。
为保证消息队列 CMQ 用户迁移至 TDMQ CMQ 版无需修改业务代码,以下接口协议与以前版本保持一致。
【版权声明】
©2013-2026 腾讯云版权所有
本⽂档著作权归腾讯云单独所有,未经腾讯云事先书⾯许可,任何主体不得以任何形式复制、修改、抄袭、传播全部或部分本⽂档内容。
【商标声明】
及其他腾讯云服务相关的商标均为腾讯集团下的相关公司主体所有。另外,本⽂档涉及的第三⽅主体的商标,依法由权利⼈所有。
【服务声明】
本⽂档意在向客户介绍腾讯云全部或部分产品、服务的当时的整体概况,部分产品、服务的内容可能有所调整。您所购买的腾讯云产品、服务的种类、服务标准等应由您与腾讯云之间的商业合同约定,除⾮双⽅另有约定,否则,腾讯云对本⽂档内容不做任何明⽰或默⽰的承诺或保证。
最近更新时间:2024-01-03 10:20:36
最近更新时间:2024-01-03 10:20:36
{"code": 5100,"message": "(100004)projectId不正确"}
错误码 | 模块错误码 | 英文描述 | 说明 | 处理措施 |
4000 | 10000 | invalid request parameters | 请求参数非法 | 请您按照文档要求检查入参 |
4000 | 10010 | lacked of required parameters | 缺少参数 | 请您按照文档要求填写必要的参数 |
4000 | 10110 | request parameters error | 参数错误 | 请您按照文档要求检查参数的值是否合法 |
4000 | 10280 | action is not existed | 请求操作不存在 | 请求的操作不存在,请您确认调用的 action 时候正确 |
4000 | 10310 | error: parameter %s key format error | 错误:参数 %s 格式错误 | 参数格式不正确,请您按照文档要求检查入参格式 |
4000 | 10320 | no such parameter %s | 没有参数 %s | 缺少参数,请您确认参数的合法性 |
4000 | 10330 | parameter %s is NOT a repeatable parameter | 参数 %s 不可重复 | 该参数不可以重复,请您确认参数的传递是否正确 |
4000 | 10350 | parameter %s value or length is out of range | 参数 %s 值或者长度超出范围 | 参数超出指定的范围,请您确认参数的合法性 |
4000 | 10360 | parameter %s error type | 参数 %s 类型错误 | 参数类型错误,请您参考说明文档对参数进行确认 |
4000 | 10370 | %s parameter batch size is out of range | 参数 %s 批量数字超过限制 | 数组的参数超出了限制,请您控制入参的个数 |
4000 | 10380 | %s parameter is not consequent | 参数 %s 不是连续的 | 参数以数组的方式传递时,请您确保下标连续 |
4000 | 10390 | lacked of required parameter %s | 缺少参数 %s | 缺少指定的参数,请您确保输入参数 |
4000 | 10400 | cannot find parameter %s in uri | 找不到参数 %s | 缺少指定的参数,请您确保输入参数 |
4000 | 10410 | unexpected http %s only GET or POST is supported | 不期待的参数 %s 目前只支持 GET 或者 POST | 请求方法当前只支持 GET 或者 POST |
4000 | 10420 | cannot parse %s, or request size is more than 1MB | 不能处理 %s,或者请求大小超过1MB | 请求多大,超过了1MB,请您控制消息的大小 |
4000 | 10430 | action name %s is not existed | 操作 %s 不存在 | 您输入的操作不存在,请您确认操作 |
4000 | 10440 | account illegal, it may be an assistant account | 账号非法,该账号可能是个协助者账号 | 请您检查账号的合法性,或者判断该账号是否是没有权限的子账号 |
4000 | 10461 | no cam authentication | 没有 CAM 权限 | 当前没有权限,请您确认权限范围 |
4100 | 10030 | authentication failed | 鉴权失败 | |
4100 | 10080 | secret id status error | secretId 状态错误 | 密钥 secretId 状态错误,请您检查 secretId 的合法性 |
4100 | 10270 | secret id is not existed | secretId 不存在 | 您指定的 secretId 不存在,请检查 secretId 的合法性 |
4300 | 10040 | charge overdue | 该账号欠费 | 该账号已经欠费,如需提供服务请您充值 |
4420 | 10250 | qps throttling | 接口调用频率超过限制 | 接口调用频率超出限制,请您控制调用频率 |
4480 | 10460 | exceed interface frequency limit, please slow down | 超过接口频率限制 | 接口调用频率超出限制,请您控制调用频率 |
6000 | 10050 | server internal error | 服务内部错误 |
错误码 | 模块错误码 | 英文描述 | 说明 | 处理措施 |
4000 | 10450 | secret id dosen't begin with AKID | secretId 必须以 AKID 开头 | secretId 必须以 AKID 开头,请您确认 secretId 的合法性 |
4000 | 4440(10100) | queue is not existed, or deleted | 队列不存在或者队列经被删除 | 您指定的消息队列不存在,请您核实队列名称是否正确 |
4000 | 10692 | delay seconds is out of range | 延时消息超出范围 | 请确认合法的延时范围,调整延时参数 |
6040 | 10660 | it will take some time to release resources of previous queue before you create a new one with the same name, please try later | 创建同名队列失败。因为刚才删除同名队列需要释放资源,目前 CMQ 为了保证数据一致性,在删除队列之后,30秒内不能创建同名队列。 | 请稍后重试 |
6050 | 10670 | your queue cannot be rewinded | 队列无法回溯 | 该队列无法回溯 |
错误码 | 模块错误码 | 英文描述 | 说明 | 处理措施 |
4000 | 10490 | number of filterTag exceed limit filterTag | 数量超过限制。目前最多是5个 | 请您控制过滤标签的个数 |
4000 | 10500 | endpoint format error | endpoint 格式错误 | 请您检查 endpoint 的格式,可能的错误有:(1)url 包含空格;(2)HTTP 的 url 没有以 "http://" 开头;(3)非法 url;(4)protocol 与 endpoint 对应不上 |
4000 | 10510 | undefined protocol | 未定义的协议 | 请检查拼写是否有误 |
4000 | 10540 | there exists subscriptions under this topic, please unsubscribe all of them before DeleteTopic | 删除 Topic 前,必须确保 Topic 下没有订阅了。这样是为了防止误删除 | 请先删除全部订阅再重试 |
4000 | 10590 | (1)topic name format error (2)subscription name format error | (1)Topic 名字格式错误 (2)订阅名字格式错误 | (1)请检查 Topic 格式 (2)订阅名字格式错误 |
4000 | 10630 | illegal endpoint | 非法 endpoint | 请填写正确的 endpoint |
4000 | 10640 | notifyContentFormat of protocol queue must be SIMPLIFIED | 当 protocol 字段为 queue 时,notifyContentFormat 必须为 SIMPLIFIED | 请注意取值 |
4000 | 10670 | too many filterTag filterTag | 数量太多,请检查参数数量 | 请检查过滤标签的个数 |
4000 | 10710 | parameters lack of bindingKey | 缺少 bindingKey | 请输入 bindingKey |
4000 | 4440(10600) | topic is not existed, or deleted | 主题不存在 | 主题不存在,请您检查主题的合法性 |
4450 | 10610 | number of topics has reached the limit Topic | 数量已经到达上限。目前最多是1000个 | 主题个数达到上限 |
4490 | 10470 | subscription is already existed | 同一个账户的同一个 Topic 下,同名订阅已经存在 | 请您选择创建的订阅 |
4500 | 10480 | number of subscription has reached the limit | 同一个 Topic 下的订阅数量超过限制,目前最大是500 | 请您控制订阅数量 |
4510 | 10570 | url connot contain any blank characters | url 不能包含空白字符 | url 格式不正确 |
6040 | 10660 | It will take some time to release resources of previous topic before you can create a new topic with the same name. Please try later. | 创建同名主题失败。因为刚才删除同名主题需要释放资源,目前 CMQ 为了保证数据一致性,在删除主题之后,30秒内不能创建同名主题 | 请您稍后重试 |
错误码 | 模块错误码 | 英文描述 | 说明 | 处理措施 |
4000 | 4460 | queue is already existed,case insensitive | 队列已经存在 | 该名称的队列已经存在,请您核实名字的正确性 |
4000 | 10020 | queue name format error | 队列名称格式错误 | |
4000 | 10120 | message body can't be empty | 消息内容不能为空 | 发送的消息内容不能为空,请您设置消息内容 |
4000 | 10470 | receiptHandle error | receiptHandle 错误。 | receiptHandle 是字符串 |
4000 | 10520 | undefined notify retry stragety | 未定义的消息推送重试策略 | 请检查拼写是否有误 |
4000 | 10530 | undefined notify content format | 未定义的消息推送格式 | 请检查拼写是否有误 |
4000 | 10680 | too many bindingKey | bindingKey 超过限制 | bindingKey 超出了限制,请您控制 bindingKey 的个数 |
4000 | 10691 | too many delimeters | 太多分隔符号 | 标签或者 bindingKey 太多分隔符,请您参考相关说明文档进行限制 |
4000 | 10700 | parameters lack of routingKey | 缺少 routingKey | 请您添加 routingKey |
4000 | 10720 | too many msgTag | 消息标签超过限制 | 消息标签个数超出最大额度,请您控制标签的个数 |
4100 | 10031 | connection is not authenticated | 连接还未鉴权 | 连接还未鉴权,请您先进行鉴权 |
4100 | 10032 | connection is already authenticated | 连接已经鉴权 | 连接已经鉴权,请勿进行二次鉴权 |
4400 | 10230 | exceed maximum message size | 消息大小已经超出限制 | |
4410 | 10240 | reach maximum retention number of message | 消息数量已经达到队列最大保留数量 | 您的消息队列已经达到了最大堆积数,请您消费队列中的消息或者提升队列的堆积消息数 |
4430 | 10260 | receipt handle is invalid | 句柄非法 | 非法的句柄,请您确认句柄的合法性 |
4450 | 10220 | number of queues has reached the limit | 当前队列个数已经达到最大值 | |
4470 | 10300 | total message size exceed 1MB | 消息大小超过1MB | 您发送的消息大小超过了1MB,请您重新调整消息大小 |
4490 | 10770 | message id is invalid | 消息 ID 非法 | 您输入的消息 ID 不正确,请您检查消息 ID 的合法性 |
4490 | 10780 | message operation is not allowed | 不允许的消息状态转换 | 事务消息的状态与您设置的状态冲突 |
4490 | 10790 | transaction message is not supported | 队列不支持事务消息 | 队列不支持事务消息 |
6000 | 10090 | send message failed | 发送消息失败 | |
6000 | 10130 | recieve message failed | 接收消息失败 | |
6000 | 10140 | delete message failed | 删除消息失败 | |
6010 | 10150 | delete message partially failed | 删除部分消息失败 | |
6000 | 10160 | get queue attributes failed | 获取队列属性失败 | |
6000 | 10170 | set queue attributes failed | 设置队列属性失败 | |
6000 | 10180 | delete queue failed | 删除队列失败 | |
6000 | 10190 | list queue failed | 获取队列列表失败 | |
6020 | 10290 | batch delete message failed | 批量删除操作失败 | |
6030 | 10650 | topic has no subscription, please create a subscription before publishing message | 发布消息失败,当前主题没有订阅 | 请您为当前主题添加订阅 |
6030 | 10730 | no bindingKey or filterTag matches the routingKey or msgTag | 该消息无法投递:该消息标签无法匹配订阅方路由关键字或过滤标签 | 请您检查主题订阅者的 BindingKey 或者生产消息的 RoutingKey 是否正确 |
6040 | 10750 | transaction confirmation failed | 确认事务消息失败 | |
6040 | 10760 | transaction confirmation partially failed | 确认事务消息部分失败 | |
6050 | 10740 | too many filterTag or bindingKey | 过滤标签或者路由关键字数量超过限制 | 您设置的过滤标签 |
6070 | 10690 | too many unacked(inactive) messages or delayed messages | 当前队列中有太多没有删除或者延时的消息 | 请您对消费完成的消息进行删除 |
7000 | 10200 | no message | 没有消息 | 当前没有消息,请您确保队列中有消息再来消费 |
最近更新时间:2024-01-03 10:20:36
名称 | 类型 | 描述 | 必选 |
Action | String | 接口指令的名称,例如 DescribeInstances | 是 |
Region | String | 区域参数,用来标识希望操作哪个区域的实例。可选: bj:北京 gz:广州 sh:上海 hk:中国香港 ca:北美 sg:新加坡 usw:美西 cd:成都 de:德国 kr:韩国 gzopen:广州OPEN | 是 |
Timestamp | UInt | 当前 UNIX 时间戳 | 是 |
Nonce | UInt | 随机正整数,与 Timestamp 联合起来,用于防止重放攻击 | 是 |
SecretId | String | 是 | |
Signature | String | 是 |
https://cvm.api.qcloud.com/v2/index.php?Action=DescribeInstances&SecretId=xxxxxxx&Region=gz&Timestamp=1402992826&Nonce=345122&Signature=mysignature&instanceId=101
最近更新时间:2024-01-03 10:20:36
https://cmq-gz.publicXXX.tencenttdmq.comhttp://gz.mqadapter.cmq.tencentyun.com参数名称 | 是否必选 | 类型 | 描述 |
queueName | 是 | String | 队列名字,在单个地域同一账号下唯一。队列名称是一个不超过64个字符的字符串,必须以字母为首字符,剩余部分可以包含字母、数字和横划线(-)。 |
msgBody | 是 | String | 消息正文。至少1Byte,最大长度受限于设置的队列消息最大长度属性。 |
delaySeconds | 否 | Int | 单位为秒,表示该消息发送到队列后,需要延时多久用户才可见该消息。 |
参数名称 | 类型 | 描述 |
code | Int | |
message | String | 错误提示信息。 |
requestId | String | 服务器生成的请求 ID,出现服务器内部错误时,用户可提交此 ID 给后台定位问题。 |
msgId | String | 服务器生成消息的唯一标识 ID。 |
https://domain/v2/index.php?Action=SendMessage&queueName=test-queue-123&msgBody=helloworld&<<a href="">公共请求参数</a>>
{"code" : 0,"message" : "","requestId":"14534664555","msgId":"123345346"}
最近更新时间:2024-01-03 10:20:36
https://cmq-gz.publicXXX.tencenttdmq.comhttp://gz.mqadapter.cmq.tencentyun.com参数名称 | 是否必选 | 类型 | 描述 |
queueName | 是 | String | 队列名字,在单个地域同一账号下唯一。队列名称是一个不超过64个字符的字符串,必须以字母为首字符,剩余部分可以包含字母、数字和横划线(-)。 |
msgBody.n | 是 | String | 消息正文。表示这一批量中的一条消息。目前批量消息数量不能超过16条。 为方便用户使用,n从0开始或者从1开始都可以,但必须连续,例如发送两条消息,可以是(msgBody.0, msgBody.1),或者(msgBody.1, msgBody.2)。 注意:由于目前限制所有消息大小总和(不包含消息头和其他参数,仅 msgBody)不超过64k,所以建议提前规划好批量发送的数量。 |
delaySeconds | 否 | Int | 单位为秒,表示该消息发送到队列后,需要延时多久用户才可见。(该延时对一批消息有效,不支持多对多映射) |
参数名称 | 类型 | 描述 |
code | Int | |
message | String | 错误提示信息。 |
requestId | String | 服务器生成的请求 ID,出现服务器内部错误时,用户可提交此 ID 给后台定位问题。 |
msgList | Array | 服务器生成消息的唯一标识 ID 列表,每个元素是一条消息的信息。 |
参数名称 | 类型 | 描述 |
msgId | String | 服务器生成消息的唯一标识 ID。 |
https://domain/v2/index.php?Action=BatchSendMessage&queueName=test-queue-123&msgBody.1=helloworld1&msgBody.2=helloworld2&<<a href="">公共请求参数</a>>
{"code" : 0,"message" : "","requestId":"14534664555","msgList":[{"msgId":"123345346"},{"msgId":"456436346"}]}
最近更新时间:2024-01-03 10:20:36
https://cmq-gz.publicXXX.tencenttdmq.comhttp://gz.mqadapter.cmq.tencentyun.com参数名称 | 是否必选 | 类型 | 描述 |
queueName | 是 | String | 队列名字,在单个地域同一账号下唯一。 队列名称是一个不超过64个字符的字符串,必须以字母为首字符,剩余部分可以包含字母、数字和横划线(-)。 |
pollingWaitSeconds | 否 | Int | 本次请求的长轮询等待时间。取值范围0 - 30秒,如果不设置该参数,则默认使用队列属性中的 pollingWaitSeconds 值。 |
参数名称 | 类型 | 描述 |
code | Int | |
message | String | 错误提示信息。 |
requestId | String | 服务器生成的请求 ID。出现服务器内部错误时,用户可提交此 ID 给后台定位问题。 |
msgBody | String | 本次消费的消息正文。 |
msgId | String | 本次消费的消息唯一标识 ID。 |
receiptHandle | String | 每次消费返回唯一的消息句柄。用于删除该消息,仅上一次消费时产生的消息句柄能用于删除消息。消费者在 visibilityTimeout 时间内消费成功后使用该句柄调用(batch)DeleteMessage 接口删除该消息,如果超出 visibilityTimeout 时间,那么该句柄将失效。 |
enqueueTime | Int | 消费被生产出来,进入队列的时间。返回 Unix 时间戳,精确到秒。 |
nextVisibleTime | Int | 消息的下次可见(可再次被消费)时间。返回 Unix 时间戳,精确到秒。 |
dequeueCount | Int | 保留字段。 |
firstDequeueTime | Int | 保留字段。 |
{"code" : 0,"message" : "","requestId":"14534664555","msgBody":"helloworld1","msgId":"123345346","receiptHandle": "283748239349283","enqueueTime": 1462351990,"firstDequeueTime": 1462352990,"nextVisibleTime": 1462352999,"dequeueCount": 2}
最近更新时间:2024-01-03 10:20:36
https://cmq-gz.publicXXX.tencenttdmq.comhttp://gz.mqadapter.cmq.tencentyun.com参数名称 | 是否必选 | 类型 | 描述 |
queueName | 是 | String | 队列名字,在单个地域同一账号下唯一。 队列名称是一个不超过64个字符的字符串,必须以字母为首字符,剩余部分可以包含字母、数字和横划线(-)。 |
numOfMsg | 是 | Int | 本次消费的消息数量。取值范围1 - 16。 |
pollingWaitSeconds | 否 | Int | 本次请求的长轮询等待时间。取值范围0 - 30秒,如果不设置该参数,则默认使用队列属性中的 pollingWaitSeconds 值。 |
参数名称 | 类型 | 描述 |
code | Int | |
message | String | 错误提示信息。 |
requestId | String | 服务器生成的请求 ID。出现服务器内部错误时,用户可提交此 ID 给后台定位问题。 |
msgInfoList | Array | message 信息列表,每个元素是一条消息的具体信息。 |
参数名称 | 类型 | 描述 |
msgBody | String | 消费的消息正文。 |
msgId | String | 消费的消息唯一标识 ID。 |
receiptHandle | String | 每次消费返回唯一的消息句柄,用于删除消费。仅上一次消费该消息产生的句柄能用于删除消息。且有效期是 visibilityTimeout,即取出消息隐藏时长,超过该时间后该句柄失效。 |
enqueueTime | Int | 消费被生产出来,进入队列的时间。返回 Unix 时间戳,精确到秒。 |
firstDequeueTime | Int | 保留字段。 |
nextVisibleTime | Int | 消息的下次可见(可再次被消费)时间。返回 Unix 时间戳,精确到秒。 |
dequeueCount | Int | 保留字段。 |
https://domain/v2/index.php?Action=BatchReceiveMessage &queueName=test-queue-123 &numOfMsg=2 &<<a href="">公共请求参数</a>>
{"code": 0,"message": "","requestId": "14534664555","msgInfoList":[{"msgBody": "helloworld1","msgId": "123345346","receiptHandle": "283748239349283","enqueueTime": 1462351990,"firstDequeueTime": 1462352990,"nextVisibleTime": 1462352999,"dequeueCount": 2},{"msgBody": "helloworld2","msgId": "1233453456","receiptHandle": "28374345763283","enqueueTime": 1462351990,"firstDequeueTime": 1462352990,"nextVisibleTime": 1462352999,"dequeueCount": 2}]}
最近更新时间:2024-01-03 10:20:35
https://cmq-gz.publicXXX.tencenttdmq.comhttp://gz.mqadapter.cmq.tencentyun.com参数名称 | 是否必选 | 类型 | 描述 |
queueName | 是 | String | 队列名字,在单个地域同一账号下唯一。 队列名称是一个不超过64个字符的字符串,必须以字母为首字符,剩余部分可以包含字母、数字和横划线(-)。 |
receiptHandle | 是 | String | 上次消费返回唯一的消息句柄,用于删除消息。 |
参数名称 | 类型 | 描述 |
code | Int | |
message | String | 错误提示信息。 |
requestId | String | 服务器生成的请求 ID。出现服务器内部错误时,用户可提交此 ID 给后台定位问题。 |
https://domain/v2/index.php?Action=DeleteMessage &queueName=test-queue-123 &receiptHandle=3423452345 &<<a href="">公共请求参数</a>>
{"code" : 0,"message" : "","requestId":"14534664555"}
最近更新时间:2026-02-03 15:48:27
https://cmq-gz.publicXXX.tencenttdmq.comhttp://gz.mqadapter.cmq.tencentyun.com参数名称 | 是否必选 | 类型 | 描述 |
queueName | 是 | String | 队列名字,在单个地域同一下唯一账号。 队列名称是一个不超过64个字符的字符串,必须以字母为首字符,剩余部分可以包含字母、数字和横划线(-)。 |
receiptHandle.n | 是 | String | 上次消费消息时返回的消息句柄。为方便用户使用,n 从0开始或者从1开始都可以,但必须连续,例如删除两条消息,可以是(receiptHandle.0,receiptHandle.1),或者(receiptHandle.1, receiptHandle.2)。 |
参数名称 | 类型 | 描述 |
code | Int | |
message | String | 错误提示信息。 |
requestId | String | 服务器生成的请求 ID。出现服务器内部错误时,用户可提交此 ID 给后台定位问题。 |
errorList | Array | 无法成功删除的错误列表。每个元素列出了消息无法成功被删除的错误及原因。 |
参数名称 | 类型 | 描述 |
code | Int | |
message | String | 错误提示信息。 |
receiptHandle | String | 对应删除失败的消息句柄。 |
https://domain/v2/index.php?Action=BatchDeleteMessage &queueName=test-queue-123 &receiptHandle.1=3423452345 &receiptHandle.1=4364564575 &<<a href="">公共请求参数</a>>
{"code" : 0,"message" : "","requestId":"14534664555"}
{"code" : 6010,"message" : "delete message partially failed","requestId":"14534664555","errorList":[{"code" : 4430,"message" : "invalid receiptHandle","receiptHandle":"4364564575"}]}
最近更新时间:2024-01-03 10:20:35
https://cmq-gz.publicXXX.tencenttdmq.comhttp://gz.mqadapter.cmq.tencentyun.com参数名称 | 是否必选 | 类型 | 描述 |
topicName | 是 | String | 主题名字,在单个地域同一账号下唯一。主题名称是一个不超过64个字符的字符串,必须以字母为首字符,剩余部分可以包含字母、数字和横划线(-)。 |
msgBody | 是 | String | 消息正文。至少1Byte,最大长度受限于设置的主题消息最大长度属性。 |
msgTag.n | 否 | String | (1)如果 filterTag 没有设置,则无论 msgTag是 否有设置,订阅接收所有发布到 Topic 的消息。 (2)如果 filterTag 数组有值,则只有数组中至少有一个值在 msgTag 数组中也存在时(即 filterTag 和 msgTag 有交集),订阅才接收该发布到 Topic 的消息。 (3)如果 filterTag 数组有值,但 msgTag 没设置,则不接收任何发布到 Topic 的消息,可以认为是(2)的一种特例,此时 filterTag 和 msgTag 没有交集。规则整体的设计思想是以订阅者的意愿为主。 |
routingKey | 否 | String | 长度<=64字节,该字段用于表示发送消息的路由路径,最多含有15个“.”,即最多16个词组。 消息发送到 topic 类型的 exchange 上时不能随意指定 routingKey。需要符合上面的格式要求,一个由订阅者指定的带有 routingKey 的消息将会推送给所有 BindingKey 能与之匹配的消费者,这种匹配情况有两种关系: 1. *(星号),可以替代一个单词(一串连续的字母串)。 2. #(井号):可以匹配一个或多个字符。 |
参数名称 | 类型 | 描述 |
code | Int | |
message | String | 错误提示信息。 |
requestId | String | 服务器生成的请求 ID,出现服务器内部错误时,用户可提交此 ID 给后台定位问题。 |
msgId | String | 服务器生成消息的唯一标识 ID。 |
https://domain/v2/index.php?Action=PublishMessage&topicName=test-topic-123&msgBody=helloworld&<公共请求参数>
{"code" : 0,"message" : "","requestId":"14534664555","msgId":"123345346"}
最近更新时间:2024-01-03 10:20:36
https://cmq-gz.publicXXX.tencenttdmq.comhttp://gz.mqadapter.cmq.tencentyun.com参数名称 | 是否必选 | 类型 | 描述 |
topicName | 是 | String | 主题名字,在单个地域同一账号下唯一。主题名称是一个不超过64个字符的字符串,必须以字母为首字符,剩余部分可以包含字母、数字和横划线(-)。 |
msgBody.n | 是 | String | 消息正文。表示这一批量中的一条消息。目前批量消息数量不能超过16条。 为方便用户使用,n 从0开始或者从1开始都可以,但必须连续,例如发送两条消息,可以是(msgBody.0, msgBody.1),或者(msgBody.1, msgBody.2)。 注意:由于目前限制所有消息大小总和(不包含消息头和其他参数,仅msgBody)不超过64k,所以建议提前规划好批量发送的数量。 |
msgTag.n | 否 | String | (1)如果 filterTag 没有设置,则无论 msgTag 是否有设置,订阅接收所有发布到 Topic 的消息。 (2)如果 filterTag 数组有值,则只有数组中至少有一个值在 msgTag 数组中也存在时(即 filterTag 和 msgTag 有交集),订阅才接收该发布到 Topic 的消息。 (3)如果 filterTag 数组有值,但 msgTag 没设置,则不接收任何发布到 Topic 的消息,可以认为是(2)的一种特例,此时 filterTag 和 msgTag 没有交集。规则整体的设计思想是以订阅者的意愿为主。 |
routingKey | 否 | String | 长度<=64 字节,该字段用于表示发送消息的路由路径,最多含有 15 个“.”, 即最多1 6 个词组。 消息发送到 topic 类型的 exchange 上时不能随意指定 routingKey,需要符合上面的格式要求。一个由订阅者指定的带有 routingKey 的消息将会推送给所有 BindingKey 能与之匹配的消费者,这种匹配情况有两种关系: 1. *(星号):可以替代一个单词(一串连续的字母串)。 2. #(井号):可以匹配一个或多个字符。 |
参数名称 | 类型 | 描述 |
code | Int | |
message | String | 错误提示信息。 |
requestId | String | 服务器生成的请求 ID,出现服务器内部错误时,用户可提交此 ID 给后台定位问题。 |
msgList | Array | 服务器生成消息的唯一标识 ID 列表,每个元素是一条消息的信息。 |
参数名称 | 类型 | 描述 |
msgId | String | 服务器生成消息的唯一标识 ID。 |
https://domain/v2/index.php?Action=BatchPublishMessage&topicName=test-topic-123&msgBody.1=helloworld1&msgBody.2=helloworld2&<公共请求参数>
{"code" : 0,"message" : "","requestId":"14534664555","msgList":[{"msgId":"123345346"},{"msgId":"456436346"}]}
最近更新时间:2024-01-03 10:20:36
<!-- cmq sdk --><dependency><groupId>com.qcloud</groupId><artifactId>cmq-http-client</artifactId><version>1.0.7</version></dependency><!-- 云API sdk --><dependency><groupId>com.tencentcloudapi</groupId><artifactId>tencentcloud-sdk-java</artifactId><version>3.1.423</version></dependency>
Account account = new Account(SERVER_ENDPOINT, SECRET_ID, SECRET_KEY);Queue queue = account.getQueue(queueName);String msg = "hello client, this is a message. Time:" + new Date();CmqResponse response = queue.send(msg);
参数 | 说明 |
SERVER_ENDPOINT | ![]() |
SECRET_ID、SECRET_KEY | ![]() |
queueName |
Account account = new Account(SERVER_ENDPOINT, SECRET_ID, SECRET_KEY);Queue queue = account.getQueue(queueName);Message message = queue.receiveMessage();// 消费成功,删除消息。未删除的消息,将在一定时间后可重新投递queue.deleteMessage(message.receiptHandle);
参数 | 说明 |
SERVER_ENDPOINT | ![]() |
SECRET_ID、SECRET_KEY | ![]() |
queueName |
<!-- cmq sdk --><dependency><groupId>com.qcloud</groupId><artifactId>cmq-http-client</artifactId><version>1.0.7</version></dependency><!-- 云API sdk --><dependency><groupId>com.tencentcloudapi</groupId><artifactId>tencentcloud-sdk-java</artifactId><version>3.1.423</version></dependency>
Account account = new Account(SERVER_ENDPOINT, SECRET_ID, SECRET_KEY);Topic topic = account.getTopic(topicName);
参数 | 说明 |
SERVER_ENDPOINT | ![]() |
SECRET_ID、SECRET_KEY | ![]() |
topicName |
String msg = "hello client, this is a message. tag=TAG1. Time:" + new Date();List<String> tags = Collections.singletonList("TAG1");String messageId = topic.publishMessage(msg, tags, null);
String msg = "hello client, this is a message. route(abc) Time:" + new Date();String messageId = topic.publishMessage(msg, "abc");
Account account = new Account(SERVER_ENDPOINT, SECRET_ID, SECRET_KEY);Queue queue = account.getQueue(queueName);Message message = queue.receiveMessage();// 消费成功,删除消息。未删除的消息,将在一定时间后可重新投递queue.deleteMessage(message.receiptHandle);
最近更新时间:2024-01-03 10:20:36
pip install --upgrade tencentcloud-sdk-python
# api认证信息cred = credential.Credential(SecretId, SecretKey)httpProfile = HttpProfile()httpProfile.endpoint = NameServerAddressclientProfile = ClientProfile()clientProfile.httpProfile = httpProfile# 创建tdmq客户端client = tdmq_client.TdmqClient(cred, "ap-guangzhou", clientProfile)# 创建cmq队列请求参数req = models.CreateCmqQueueRequest()params = {"QueueName": "queue_api",# 下面是死信队列相关配置"DeadLetterQueueName": "dead_queue_api", # 死信队列,该消息队列要先创建"Policy": 0, # 0为消息被多次消费未删除,1为Time-To-Live过期"MaxReceiveCount": 3 # 最大接收次数 1-1000}req.from_json_string(json.dumps(params))# 创建cmq消息队列resp = client.CreateCmqQueue(req)
参数 | 说明 |
NameServerAddress | ![]() |
SecretId、SecretKey | ![]() |
import osimport syssys.path.insert(0, os.path.dirname(os.path.abspath(__file__)) + "/..")import loggingfrom cmq.account import Accountfrom cmq.queue import Messagefrom cmq.cmq_exception import CMQExceptionBase# 腾讯云账户 secretId、secretKey, 此处还需注意密钥对的保密# 密钥可前往https://console.intl.cloud.tencent.com/cam/capi网站进行获取secretId = 'AKIDSiiRtxxxx'secretKey = 'GGzSeaM5xxxx'# CMQ的服务调用地址nameServerAddress = 'https://cmq-gz.public.tencenttdmq.com'# 初始化 my_account, my_queue# Account类对象不是线程安全的,如果多线程使用,需要每个线程单独初始化Account类对象my_account = Account(nameServerAddress, secretId, secretKey, debug=True)my_account.set_log_level(logging.DEBUG)# 消息队列名称queue_name = sys.argv[1] if len(sys.argv) > 1 else "python_queue"my_queue = my_account.get_queue(queue_name)try:# 消息内容msg_body = "I am test message."msg = Message(msg_body)# 发送消息re_msg = my_queue.send_message(msg)# 发送结果print("Send Message Succeed! MessageBody:%s MessageID:%s" % (msg_body, re_msg.msgId))except CMQExceptionBase as e:print("Send Message Fail! Exception:%s\n" % e)
参数 | 说明 |
NameServerAddress | ![]() |
SecretId、SecretKey | ![]() |
queue_name |
import osimport syssys.path.insert(0, os.path.dirname(os.path.abspath(__file__)) + "/..")import loggingfrom cmq.account import Accountfrom cmq.cmq_exception import CMQExceptionBase# 腾讯云账户 secretId、secretKey, 此处还需注意密钥对的保密# 密钥可前往https://console.intl.cloud.tencent.com/cam/capi网站进行获取secretId = 'AKIDSiiRtxxxx'secretKey = 'GGzSeaM5xxxx'# CMQ的服务调用地址nameServerAddress = 'https://cmq-gz.public.tencenttdmq.com'# 初始化 my_account, my_queue# Account类对象不是线程安全的,如果多线程使用,需要每个线程单独初始化Account类对象my_account = Account(nameServerAddress, secretId, secretKey, debug=True)my_account.set_log_level(logging.DEBUG)queue_name = sys.argv[1] if len(sys.argv) > 1 else "python_queue"my_queue = my_account.get_queue(queue_name)try:wait_seconds = 3# 获取消息recv_msg = my_queue.receive_message(wait_seconds)# 具体业务print("Receive Message Succeed! ReceiptHandle:%s MessageBody:%s MessageID:%s" % (recv_msg.receiptHandle, recv_msg.msgBody, recv_msg.msgId))# 消费成功,删除消息my_queue.delete_message(recv_msg.receiptHandle)except CMQExceptionBase as e:print("Receive Message Fail! Exception:%s\n" % e)
参数 | 说明 |
NameServerAddress | ![]() |
SecretId、SecretKey | ![]() |
queue |
# api认证信息cred = credential.Credential(SecretId, SecretKey)httpProfile = HttpProfile()httpProfile.endpoint = NameServerAddressclientProfile = ClientProfile()clientProfile.httpProfile = httpProfileclient = tdmq_client.TdmqClient(cred, "ap-guangzhou", clientProfile)req = models.CreateCmqTopicRequest()params = {"TopicName": "topic_api", # 主题名字,在单个地域同一账号下唯一"FilterType": 1, # 用于指定主题的消息匹配策略。1:表示标签匹配策略;2:表示路由匹配策略"MsgRetentionSeconds": 86400 # 消息保存时间。取值范围60 - 86400 s(即1分钟 - 1天)}req.from_json_string(json.dumps(params))# 创建topicresp = client.CreateCmqTopic(req)
参数 | 说明 |
NameServerAddress | ![]() |
SecretId、SecretKey | ![]() |
# api认证信息cred = credential.Credential(SecretId, SecretKey)httpProfile = HttpProfile()httpProfile.endpoint = NameServerAddressclientProfile = ClientProfile()clientProfile.httpProfile = httpProfileclient = tdmq_client.TdmqClient(cred, "ap-guangzhou", clientProfile)req = models.CreateCmqSubscribeRequest()params = {"TopicName": "topic_api", # 创建订阅的topic名称"SubscriptionName": "sub", # 订阅名称"Protocol": "queue", # 订阅的协议,目前支持两种协议:http、queue。使用http协议,用户需自己搭建接受消息的web server。使用queue,消息会自动推送到CMQ queue,用户可以并发地拉取消息。"Endpoint": "topic_queue_api", # 接收通知的Endpoint,根据协议Protocol区分:对于http,Endpoint必须以“http://”开头,host可以是域名或IP;对于Queue,则填QueueName。"NotifyStrategy": "BACKOFF_RETRY", # CMQ推送服务器的重试策略。取值有:1)BACKOFF_RETRY,退避重试。;2)EXPONENTIAL_DECAY_RETRY,指数衰退重试。"FilterTag": ["TAG"], # 消息标签(用于消息过滤)。标签数量不能超过5个# "BindingKey": ["a.b.c"], # BindingKey数量不超过5个, 每个BindingKey长度不超过64字节,该字段表示订阅接收消息的过滤策略"NotifyContentFormat": "SIMPLIFIED" # 推送内容的格式。取值:1)JSON;2)SIMPLIFIED,即raw格式。如果Protocol是queue,则取值必须为SIMPLIFIED。如果Protocol是http,两个值均可以,默认值是JSON。}req.from_json_string(json.dumps(params))# 创建订阅resp = client.CreateCmqSubscribe(req)
参数 | 说明 |
NameServerAddress | ![]() |
SecretId、SecretKey | ![]() |
import osimport syssys.path.insert(0, os.path.dirname(os.path.abspath(__file__)) + "/..")import loggingfrom cmq.account import Accountfrom cmq.cmq_exception import *from cmq.topic import *# 腾讯云账户 secretId、secretKey, 此处还需注意密钥对的保密# 密钥可前往https://console.intl.cloud.tencent.com/cam/capi网站进行获取secretId = 'AKIDSiiRtxxxx'secretKey = 'GGzSeaM5xxxx'# CMQ的服务调用地址nameServerAddress = 'https://cmq-gz.public.tencenttdmq.com'try:# 初始化 my_account# Account类对象不是线程安全的,如果多线程使用,需要每个线程单独初始化Account类对象my_account = Account(nameServerAddress, secretId, secretKey, debug=True)my_account.set_log_level(logging.DEBUG)# topic主题名称topic_name = sys.argv[1] if len(sys.argv) > 1 else "python_topic_route"my_topic = my_account.get_topic(topic_name)except CMQExceptionBase as e:print("Exception:%s\n" % e)
参数 | 说明 |
NameServerAddress | ![]() |
SecretId、SecretKey | ![]() |
topic_name |
# 消息tagtags = ["TAG", "TAG1", "TAG2"]for tag in tags:# 发送tag消息message = Message("this is a test TAG message. TAG:" + tag, [tag])re_msg = my_topic.publish_message(message)# 发送结果print("Send Message Succeed! MessageBody:%s MessageID:%s" % (message.msgBody, re_msg.msgId))
# 消息route信息routes = ["a.b.c", "a.b.x", "a.c.d", "x.y.z", "x.y.c"]for route in routes:message = Message("this is a test route message. Route:" + route)# 发送route消息re_msg = my_topic.publish_message(message, route)# 发送结果print("Send Message Succeed! MessageBody:%s MessageID:%s" % (message.msgBody, re_msg.msgId))
最近更新时间:2024-01-03 10:20:36
接口名称 | 接口功能 |
创建 TDMQ CMQ 版队列接口 | |
创建 TDMQ CMQ 版订阅接口 | |
创建 TDMQ CMQ 版主题 | |
删除 TDMQ CMQ 版队列 | |
删除 TDMQ CMQ 版订阅 | |
删除 TDMQ CMQ 版主题 | |
枚举 TDMQ CMQ 版死信队列源队列 | |
查询 TDMQ CMQ 版队列详情 | |
查询 TDMQ CMQ 版全量队列 | |
查询 TDMQ CMQ 版订阅详情 | |
查询 TDMQ CMQ 版主题详情 | |
枚举 TDMQ CMQ 版全量主题 | |
修改 TDMQ CMQ 版队列属性 | |
修改 TDMQ CMQ 版订阅属性 | |
修改 TDMQ CMQ 版主题属性 | |
回溯 TDMQ CMQ 版队列 | |
解绑 TDMQ CMQ 版死信队列 |
参数名称 | 描述 |
QueueName | 队列名字,在单个地域同一账号下唯一。队列名称是一个不超过 64 个字符的字符串,必须以字母为首字符,剩余部分可以包含字母、数字和横划线(-)。 |
MaxMsgHeapNum | 最大堆积消息数。取值范围在公测期间为 1,000,000 - 10,000,000,正式上线后范围可达到 1000,000-1000,000,000。默认取值在公测期间为 10,000,000,正式上线后为 100,000,000。 |
PollingWaitSeconds | 消息接收长轮询等待时间。取值范围 0-30 秒,默认值 0。 |
VisibilityTimeout | 消息可见性超时。取值范围 1-43200 秒(即12小时内),默认值 30。 |
MaxMsgSize | 消息最大长度。取值范围 1024-65536 Byte(即1-64K),默认值 65536。 |
MsgRetentionSeconds | 消息保留周期。取值范围 60-1296000 秒(1min-15天),默认值 345600 (4 天)。 |
RewindSeconds | 队列是否开启回溯消息能力,该参数取值范围0-msgRetentionSeconds,即最大的回溯时间为消息在队列中的保留周期,0表示不开启。 |
Transaction | 1 表示事务队列,0 表示普通队列。 |
FirstQueryInterval | 第一次回查间隔。 |
MaxQueryCount | 最大回查次数。 |
DeadLetterQueueName | 死信队列名称。 |
Policy | 死信策略。0为消息被多次消费未删除,1为 Time-To-Live 过期。 |
MaxReceiveCount | 最大接收次数 1-1000。 |
MaxTimeToLive | polic 为1时必选。最大未消费过期时间。范围300-43200,单位秒,需要小于消息最大保留时间msgRetentionSeconds。 |
Trace | 是否开启消息轨迹追踪,当不设置字段时,默认为不开启,该字段为 true 表示开启,为 false 表示不开启。 |

import com.tencentcloudapi.common.Credential;import com.tencentcloudapi.common.profile.ClientProfile;import com.tencentcloudapi.common.profile.HttpProfile;import com.tencentcloudapi.common.exception.TencentCloudSDKException;import com.tencentcloudapi.tdmq.v20200217.TdmqClient;import com.tencentcloudapi.tdmq.v20200217.models.*;public class CreateCmqQueue{public static void main(String [] args) {try{// 实例化一个认证对象,入参需要传入腾讯云账户 secretId,secretKey,此处还需注意密钥对的保密// 密钥可前往https://console.intl.cloud.tencent.com/cam/capi网站进行获取Credential cred = new Credential("SecretId", "SecretKey");// 实例化一个 http 选项,可选的,没有特殊需求可以跳过HttpProfile httpProfile = new HttpProfile();httpProfile.setEndpoint("tdmq.tencentcloudapi.com");// 实例化一个client选项,可选的,没有特殊需求可以跳过ClientProfile clientProfile = new ClientProfile();clientProfile.setHttpProfile(httpProfile);// 实例化要请求产品的 client 对象,clientProfile 是可选的TdmqClient client = new TdmqClient(cred, "ap-guangzhou", clientProfile);// 实例化一个请求对象,每个接口都会对应一个 request 对象CreateCmqQueueRequest req = new CreateCmqQueueRequest();req.setQueueName("queen");req.setPollingWaitSeconds(10L);req.setVisibilityTimeout(10L);req.setMaxMsgSize(1048576L);req.setMsgRetentionSeconds(345600L);// 返回的 resp 是一个 CreateCmqQueueResponse 的实例,与请求对象对应CreateCmqQueueResponse resp = client.CreateCmqQueue(req);// 输出 json 格式的字符串回包System.out.println(CreateCmqQueueResponse.toJsonString(resp));} catch (TencentCloudSDKException e) {System.out.println(e.toString());}}}
最近更新时间:2024-01-03 10:20:36
属性 | 描述 |
maxMsgHeapNum | 最大堆积消息数。队列中可以存储的消息条数,该属性表示了队列的存储和堆积能力。 |
pollingWaitSeconds | 消息接收长轮询等待时间。取值范围0 - 30秒,该时间设置表示的是消费消息时默认等待接收消息的时间。 例如设置为10,那么在消费消息时,如果没有消息, 默认会等待10s返回;如果有消息则会立即返回。 也可以在接收消息的时候设置自定义的等待时间,不使用队列的属性值。 |
visibilityTimeout | 消息可见性超时。 消息被消费者获取到,会有一个不可见时间,即在这个时间之内别的消费者无法获取这条消息。取值范围1 - 43200秒(即12小时内),默认值为30。 |
maxMsgSize | 消息最大长度。取值范围1024 - 1048576Byte(即1K - 1024K),默认值为65536。 |
msgRetentionSeconds | 消息生命周期,即消息在队列中的保存时间,取值范围60 - 1296000秒(1min - 15天),默认值为345600(4天)。 |
createTime | 队列的创建时间。返回 Unix 时间戳,精确到秒。 |
lastModifyTime | 最后一次修改队列属性的时间。返回 Unix 时间戳,精确到秒。 |
activeMsgNum | 在队列中处于 Active 状态(不处于被消费状态)的消息总数,为近似值。 |
inactiveMsgNum | 在队列中处于 Inactive 状态(正处于被消费状态)的消息总数,为近似值。 |
rewindSeconds | 回溯队列的消息回溯时间最大值,取值范围0 - 43200秒,0表示不开启消息回溯。 |
rewindmsgNum | 已调用 DelMsg 接口删除但还在回溯保留时间内的消息数量。 |
minMsgTime | 消息最小未消费时间,单位为秒。 |
delayMsgNum | 延时消息数量。 |
属性 | 描述 |
msgCount | 当前该主题中堆积的消息数目(消息堆积数)。 |
maxMsgSize | 消息最大长度。取值范围1024 - 1048576Byte(即1 - 1024KB),默认值为65536。 |
msgRetentionSeconds | 消息在主题中最长存活时间,从发送到该主题开始经过此参数指定的时间后,不论消息是否被成功推送给用户都将被删除,该参数单位为秒。固定为一天(86400秒),该属性不能修改。 |
createTime | 主题的创建时间。返回 Unix 时间戳,精确到秒。 |
lastModifyTime | 最后一次修改主题属性的时间。返回 Unix 时间戳,精确到秒。 |
filterType | 描述用户创建订阅时选择的过滤策略: filterType = 1 表示用户使用 filterTag 标签过滤。 filterType = 2 表示用户使用 bindingKey 过滤。 |