消息队列 MQ Open API


消息队列 MQ Open API - - - - - - - Open API MQ Open API 简介 本文介绍 MQ Open API 的基本概念,包括使用场景、基本原理、功能以及局限性。 面向用户和场景 Open API 是 MQ 提供给用户的管控手段,用于实现一系列资源管理和运维功能,同生产用 SDK 不同,主要 用于管理 MQ 相关的资源,例如 Topic、订阅组等。 Open API 的主要用户包括: 已经开通 MQ 服务,并熟悉 MQ 消息的收发。 已经熟悉 MQ 控制台的主要功能。 需要实现类似控制台的管控,存在自定义管控功能等需求。 适用场景和局限性 Open API 目前仅支持公共云和金融云区域,对于私有云暂不支持,同时云上各个 Region 的开通情 况请以实际公开的 Region 信息为准。 Open API 目前属于公测阶段,稳定性和可靠性还在逐步优化,使用过程中遇到问题请联系 MQ 技术 人员提供支持。 Open API 由于其实现原理,调用端必须具备公网访问能力,否则无法调通。 Open API 底层基于 HTTP 协议实现,性能和效率不高,仅适用于管控场景,请勿用于大批量高并发 的生产场景。 Open API 基本原理 Open API 底层通过 HTTP 接口提供服务,用户调用 Open API 的 SDK,发出 HTTP 请求到阿里云应用网关 POP,再由 POP 将请求转发给 MQ 的后端服务去执行。 用户将参数封装到每个请求中,每个请求即对应一个接口。执行的结果放在 response 中。请求和响应的字符 编码都是采用 UTF-8 编码。 注意:POP 网关是面对公网环境提供服务的,因此使用 Open API 的前提是客户端能够访问公网服务,否则会 提示服务无法连接。 调用链路如下图所示: 消息队列 MQ Open API 1 - - - - - - - - - - - 历史版本说明 API 版本:1.2.1-SNAPSHOT 查看授权接口可以不指定 userId; 支持调用账号的 parentId 查询。 API 版本:1.2.0-SNAPSHOT 支持 Region 化调用; 支持账号授权 API; 支持消息发送接收的趋势查询 API。 API 版本:1.1.1-SNAPSHOT 支持根据 Topic 做分页查询消息; 清除消息堆积支持全清和根据时间戳2种方式。 API 版本:1.1.0-SNAPSHOT Open API 支持动态错误码; TopicGet 接口不再需要输入 Region 信息,可以用于查询某个 Topic 属于哪个 Region; 该版本升级为 HTTPS 接。版本号若低于 1.1.0-SNAPSHOT,将不再支持; 变换版本号为 1.1.0-SNAPSHOT。 消息队列 MQ Open API 2 - ● ● - - - - ● ● ● - - - - API 版本:1.0.2-SNAPSHOT Open API 修复若干 bug: 创建 Topic 时,重复情况下异常信息透传; 查询消息需要传入 Topic。 全面添加鉴权需要的信息; 添加消息轨迹的 API 接口; 报警接口,添加 list 等接口。 API 版本:1.0.1-SNAPSHOT Open API 修复若干 bug: 把返回结果中所有 regionId 替换成 OnsRegionId 以和 POP 的 regionId 区分开,方便用 户理解; 修复 consumerstatus 返回结果中的若干问题,保护 consumetime 超界,clientId 没有说 明等问题; 修复 consumestatus 等接口返回的 List 为空等问题。 变换版本号为 1.0.1-SNAPSHOT API 版本:1.0.0-SNAPSHOT Open API 上线测试; 更新文档中的参数说明,修复 regionidList 等方法的使用; 添加接入 API 的依赖描述。 MQ Open API 接入指南 本文档介绍 MQ Open API 的接入步骤以及注意事项,包含 SDK 的获取,以及初始化参数的设置。 1. SDK 获取 公测期间,MQ Open API 的 SDK 获取方法有2种,一种是下载 SDK 源码,编译后加入到本地的 Maven 仓库 中,另一种是下载打包好的 Jar 包,直接导入工程中。 下载 SDK 源码:下载链接 com.aliyun aliyun-java-sdk-ons 1.2.1-SNAPSHOT com.aliyun aliyun-java-sdk-core 消息队列 MQ Open API 3 注意:由于公测期间 aliyun-java-sdk-ons 的 lib 目前还没有部署到软件仓库中,所以是从官网上下 载 SDK 到本地,编译部署到本地的软件仓库中。 下载 Jar 包:SDK Jar 包下载链接 其中 aliyun-java-sdk-ons 的 Jar 包是从官网上下载 SDK 到本地。 2. 公共参数设置 Open API 使用时需要启动 Open API 的客户端,而客户端启动时需要设置接入点和 AccessKey,SecretKey 等参数信息,具体示例如下: 2.2.0 com.aliyun aliyun-java-sdk-core 2.2.0 /** *Open API的接入点,设置为目标Region */ String regionId = "XXXXX"; /** *鉴权使用的AccessKey,由阿里云官网控制台获取 */ String accessKey = "XXXXXXXXXXXXXXXXX"; /** *鉴权使用的SecretKey,由阿里云官网控制台获取 */ String secretKey = "XXXXXXXXXXXXXXXXX"; /* *通过Open API访问的云产品名称,此处设置为Ons即可 */ String productName ="Ons"; /** *对应endPoint接入点的接入点域名 */ String domain ="ons.XXXXX.aliyuncs.com"; try { DefaultProfile.addEndpoint(regionId,regionId,productName,domain); } catch (ClientException e) { e.printStackTrace(); } 消息队列 MQ Open API 4 - - - - - - 参数说明 regionId:指的是 API 的网关所在区域,目前支持的有 cn-beijing,cn-hangzhou,cn- qingdao,cn-shenzhen 等。 accessKey:指的是用户在阿里云服务器管理控制台上获取的 AK。 secretKey:指的是用户在阿里云服务器管理控制台上获得的 SK。 endPointName:接入点名称,同 RegionId 一致即可。 productName:Open API 的产品名称,直接写 Ons 即可。 domain:Open API 的接入点 Domain,规则是ons.${RegionId}.aliyuncs.com,目前 MQ 支持 Open API 的 Region 请参考下表。 MQ Open API 公共术语 本文档描述 MQ Open API 涉及到的公共术语的解释,供查询参考。 网关参数类 RegionId 阿里云上产品所在的地域,包括 cn-beijing,cn-hangzhou 等多个,调用 Open API 时请根据访问需求设置 对应的 Region,例如需要操作华北2 Region 的 MQ 资源请设置 cn-beijing。相关信息见首页的表格。 IClientProfile profile= DefaultProfile.getProfile(regionId,accessKey,secretKey); IAcsClient iAcsClient= new DefaultAcsClient(profile); 区域名称 RegionId Domain 备注 公共云华北2 cn-beijing ons.cn- beijing.aliyuncs.com 使用公共云华北2 Region 的用户建议此 接入点 公共云华北1 cn-qingdao ons.cn- qingdao.aliyuncs.co m 使用公共云华北1 Region 的用户建议此 接入点 公共云华东1 cn-hangzhou ons.cn- hangzhou.aliyuncs.c om 使用公共云华东1 Region 的用户建议此 接入点 公共云华东2 cn-shanghai ons.cn- shanghai.aliyuncs.co m 使用公共云华东2 Region 的用户建议此 接入点 公共云华南1 cn-shenzhen ons.cn- shenzhen.aliyuncs.co m 使用公共云华南1 Region 的用户建议此 接入点 金融云华东1 cn-hangzhou- finance ons.cn-hangzhou- finance.aliyuncs.com 使用金融云华东1 Region 的用户建议此 接入点 消息队列 MQ Open API 5 OnsRegionId MQ 产品定义的 Region 信息,一般用于 API 请求的参数,用于指定 API 操作对应 Region 的 MQ 资源,此 处 Region 信息需要根据 OnsRegionList 接口获取。 EndPoint Open API 根据设置的接入点来调用对应的后端服务。一般设置为对应的 RegionId 即可。 Domain Open API 根据设置的访问域名来调用对应的后端服务。例如 domain 为 ons.cn-hangzhou.aliyuncs.com 代 表连到华东1的 MQ 后端服务。 账号安全类 AccessKey 访问阿里云产品使用的账号的 AK,由阿里云官网获得,调用时传入给 MQ 后台用于身份验证,调用 MQ Open API 只能操作对应账号下的资源。 SecretKey 访问阿里云产品使用的账号的 AK 秘钥,由阿里云官网获得,调用时传入,用于计算访问请求的签名,MQ 后 端根据对应账号比对签名实现鉴权。 MQ 资源管控类 Topic MQ 产品中消息按照 Topic 进行分来存储,因此 Topic 是 MQ 中最重要的资源之一。MQ 中 Topic 全局唯一 。 ProducerId(PID) MQ 产品中确定发布关系的唯一标识,用于标识一个发送的集群。MQ 中 ProducerId 全局唯一,后续文档中 对 ProducerID 简称 PID。 ConsumerId(CID) MQ 产品中确定订阅关系的唯一标识,用于标识一个订阅组,而采用同一个 ConsumerId 的客户端,其消费消 息的逻辑必须完全一致。MQ 中 ConsumerId 全局唯一,后续文档中对 ConsumerId 简称 CID。 消息堆积 消息堆积指 MQ 产品中描述消费方尚未进行处理的消息数据,当消息的生产快于消费的时候,两者之差即为堆 积数,正常情况下堆积数应该在可控范围内.如果堆积数过多而且成上涨趋势,则需要关注消费方慢的原因。 消息队列 MQ Open API 6 1. 2. 3. 4. - - - 场景示例 资源查询场景 本文档主要介绍如何使用 Open API 来完成对指定账号下所拥有的 MQ 资源的查询,包含三类,分别是 Topic,Publish,Subscribe 信息。 资源查询 查询的资源包含 Topic,Publish,Subscribe 三大类信息。 查询时均可根据 Topic,Publish,Subscribe 的名称进行精确查询。 如果没有精确信息,可以根据相关内容自动进行搜索查询。 如果不需要获取精确信息,可以查询当前账号下所有资源的列表。 主要流程 调用流程如下图所示: 相关 API Publish 列表: OnsPublishList Publish 搜索: OnsPublishSearch Publish 精确查询: OnsPublishGet 消息队列 MQ Open API 7 - - - - - - 1. 2. 3. 4. - - - - - - Topic 列表: OnsTopicList Topic 搜索: OnsTopicSearch Topic 精确查询: OnsTopicGet Subscribe 列表: OnsSubscribeList Subcribe 搜索: OnsSubscribeSearch Subscibe 精确查询: OnsSubscribeGet 消息堆积场景 本文主要介绍如何使用 Open API 来完成运行过程中 MQ 消息状态的查询,一般用于定位消息发送状况、消息 消费状况,是否有堆积,如何处理堆积等。 查询思路 查看 Topic 消息发送状态: 即查看目标 Topic 当前服务器上存在的有效消息总数以及最新状态。 查看订阅组的消费进度: 即查看指定的订阅组的消费是否有堆积。 客户端消费状态查询: 如果存在堆积,可以查看消费组内各个客户端的连接状态,是否有客户端消 费线程阻塞。 消费位点重置: 根据业务需求对消费方的消费进度位点进行更新,该功能包含两个场景。 场景 A:如果消息可以丢弃,则选择清除所有消息。 场景 B:如果堆积的消息需要回收或者更新到指定时刻,可以选择根据指定时刻进行位点 重置。 主要流程 调用流程如下图所示: 相关 API 当前消息查询: OnsTopicStatus 消费进度查询: OnsConsumerAccumulate 消费者状态查询: OnsConsumerStatus 清除堆积: OnsConsumerResetOffset 消息队列 MQ Open API 8 - - - 资源授权场景 本文档主要介绍如何使用 Open API 来完成指定 Topic 资源的授权操作。 资源授权 新建授权:将自己当前所拥有的指定 Topic 授权给目标用户,可以是主账号或者子账户。 查看授权:查看目标 Topic 已经被授权的用户列表以及权限数据。 删除授权:删除某个 Topic 对目标账号的授权。 主要流程 调用流程如下图所示: 相关 API 新建授权: OnsEmpowerCreate 查看授权: OnsEmpowerList 删除授权: OnsEmpowerDelete MQ Open API 错误码列表 MQ Open API 调用成功时返回给客户端的 ResponseCode=200,当出现调用失败时,会返回对应的异常错 误码以及描述信息。您可以根据以下异常信息对照表查找对应的解决方法。 错误码 现象&原因 解决方法 ONS_SYSTEM_ERROR MQ 后端异常 通过阿里云工单联系 MQ 技术 人员 ONS_SERVICE_UNSUPPORTE D 当前调用在对应的 Region 区域 不支持 请找 MQ 技术支持确认该接口 的开通情况 消息队列 MQ Open API 9 Topic 相关接口 列举 Topic 本文介绍 OnsTopicList 接口,用于查询当前用户下所有 Topic 的列表信息。 1. 使用场景 查询账号下所有 Topic 的列表信息,一般用于生成资源列表的场景,并不查看具体信息。 2. 请求参数列表 ONS_INVOKE_ERROR Open API 接口调用失败 联系 MQ 技术人员处理 BIZ_FIELD_CHECK_INVALID 参数检验失败 请参考 API 手册检查各个参数 传入是否合法 BIZ_TOPIC_NOT_FOUND Topic 没有找到 请检查 Topic 输入是否合法 ,或者是否创建过 BIZ_SUBSCRIPTION_NOT_FO UND 目标订阅关系 CID 找不到 请检查 CID 是否创建过,或者 查询条件错误 BIZ_PUBLISHER_EXISTED 指定 PID 已经存在 更换 PID 的名称重试请求 BIZ_SUBSCRIPTION_EXISTED 指定 CID 已经存在 更换 CID 的名称重试请求 BIZ_CONSUMER_NOT_ONLI NE 指定 CID 的客户端不在线 请确保消费端在线,然后重试请 求 BIZ_NO_MESSAGE 当前查询条件没有匹配消息 请检查查询条件,并确认查询范 围内是否发过消息 BIZ_REGION_NOT_FOUND 请求的 Region 找不到 确认请求的 Region 参数是否合 法 BIZ_TOPIC_EXISTED 指定 Topic 已经存在 更改 Topic 名称重试请求 BIZ_PRODUCER_ID_BELONG_ TO_OTHER_USER 当前 PID 已经被其他用户占用 更换 PID 重试请求 BIZ_CONSUMER_ID_BELONG _TO_OTHER_USER 当前 CID 已经被其他用户占用 更换CID重试请求 BIZ_PUBLISH_INFO_NOT_FO UND 请求的 PID 没有找到 确认 PID 是否存在,或者请求 条件错误 EMPOWER_EXIST_ERROR 当前授权关系已经存在 核实请求参数,重试或者先查询 EMPOWER_OWNER_CHECK_ ERROR 当前用户不是授权 Topic 的 Owner 确认资源所属关系 名称 类型 是否必须 描述 消息队列 MQ Open API 10 3. 返回参数列表 PublishInfoDo 数据结构 OnsRegionId String 是 当前查询 MQ 所在区 域,可以通过 ONSRegionList 方法 获取,参见公共术语 OnsPlatform String 否 该请求来源,默认是从 POP 平台 PreventCache Long 是 用于 CSRF 校验,设置 为系统当前时间即可 Topic String 否 查询指定 Topic 时设 置,否则查询所有 Topic 名称 类型 描述 RequestId String 为公共参数,每个请求独一无二 HelpUrl String 帮助链接 Data List(PublishInfoDo) 返回所有已发布的 Topic 信息 列表 成员 类型 描述 id Long 该 Topic 信息编号 channelId Integer 该 Topic 所在区域 ID,0代表 阿里云,1代表聚石塔 channelName String 该 Topic 所在区域名称 ,ALIYUN 代表阿里云 ,CLOUD 代表聚石塔,… onsRegionId Long 该 Topic 所在区域 ID,就是 ONSRegionList 方法获取的内 容 regionName String 该 Topic 所在区域名称 topic String Topic 名称 owner String Topic 所有者编号,为阿里云的 uid relation Integer 所有关系编号1为持有者,2表 示可以发布,4表示可以订阅 ,6表示可以发布和订阅 relationName String 所有关系名称,例如持有者、可 订阅、可发布、可发布订阅 status Integer 当前状态编号(0 服务中 1 冻结 2 暂停) 消息队列 MQ Open API 11 - - - - 4. 相关 API OnsTopicCreate:创建 Topic OnsTopicList:查看 Topic 列表 OnsPublishDelete:删除发布关系 OnsSubscribeDelete:删除订阅关系 5. 使用示例 调用示例: 本示例仅仅提供一个参考,从华东1接入点接入,查询当前用户下所有的 Topic 列表。 statusName String 当前状态别名,服务中, appkey Integer null createTime Long 创建时间 updateTime Long 更新时间 remark String 备注信息 public static void main (String[]args) { String regionId = "cn-hangzhou"; String accessKey = "XXXXXXXXXXXXXXXXX"; String secretKey = "XXXXXXXXXXXXXXXXX"; String endPointName ="cn-hangzhou"; String productName ="Ons"; String domain ="ons.cn-hangzhou.aliyuncs.com"; /** *根据自己需要访问的区域选择Region,并设置对应的接入点 */ try { DefaultProfile.addEndpoint(endPointName,regionId,productName,domain); } catch (ClientException e) { e.printStackTrace(); } IClientProfile profile= DefaultProfile.getProfile(regionId,accessKey,secretKey); IAcsClient iAcsClient= new DefaultAcsClient(profile); OnsTopicListRequest request =new OnsTopicListRequest(); /** *ONSRegionId是指你需要API访问MQ哪个区域的资源. *该值必须要根据OnsRegionList方法获取的列表来选择和配置,因为OnsRegionId是变动的,不能够写固定值 */ request.setOnsRegionId("daily"); request.setPreventCache(System.currentTimeMillis()); request.setTopic("XXXXXXXXXXXXX"); try { OnsTopicListResponse response=client.getAcsResponse(request); List publishInfoDoList=response.getData(); for(OnsTopicListResponse.PublishInfoDo publishInfoDo:publishInfoDoList){ 消息队列 MQ Open API 12 查询 Topic 本文介绍 OnsTopicGet 接口,用于查询指定 Topic 的信息,属于精确查询。 1. 使用场景 查询账号下指定 Topic 的分布情况,并获取 Topic 当前的开通状态和权限关系等信息。由于是精确查询,因此 输入参数必须包含 Topic 名称。 2. 请求参数列表 3. 返回参数列表 PublishInfoDo 数据结构 System.out.println(publishInfoDo.getTopic()+" "+ publishInfoDo.getOwner()); } } catch (ServerException e) { e.printStackTrace(); } catch (ClientException e) { e.printStackTrace(); } } 名称 类型 是否必须 描述 OnsRegionId String 是 当前查询 MQ 所在区 域,可以通过 ONSRegionList 方法 获取,参见公共术语 OnsPlatform String 否 该请求来源,默认是从 POP 平台 PreventCache Long 是 用于 CSRF 校验,设置 为系统当前时间即可 Topic String 是 指定查询的 Topic 名称 类型 描述 RequestId String 为公共参数,每个请求独一无二 HelpUrl String 帮助链接 Data List(PublishInfoDo) 返回所有已发布的 Topic 信息 列表 成员 类型 描述 id Long 该 Topic 信息编号 channelId Integer 该 Topic 所在区域 ID,0代表 消息队列 MQ Open API 13 - - - - 4. 相关 API OnsTopicCreate:创建 Topic OnsTopicList:查看 Topic 列表 OnsPublishDelete:删除发布关系 OnsSubscribeDelete:删除订阅关系 5. 使用示例 调用示例: 本示例仅仅提供一个参考,从华东1接入点接入,查询名为”MingduanTest”的 Topic,并打印 Topic 的相关 信息。 阿里云,1代表聚石塔 channelName String 该 Topic 所在类别,阿里云 ,或者聚石塔,… onsRegionId Long 该 Topic 所在区域 ID,就是 ONSRegionList 方法获取的内 容 regionName String 该 Topic 所在区域名称 topic String Topic 名称 owner String Topic 所有者编号,为阿里云的 uid relation Integer 所有关系编号1为持有者,2为 可以发布,4为可以订阅,6为 可以发布和订阅 relationName String 所有关系名称,例如持有者、可 订阅、可发布、可发布订阅 status Integer 当前状态编号(0 服务中 1 冻结 2 暂停) statusName String 当前状态别名,服务中,未开通 appkey Integer null createTime Long 创建时间 updateTime Long 更新时间 remark String 备注信息 public static void main(String[] args) { String regionId = "cn-hangzhou"; String accessKey = "XXXXXXXXXXXXXXXXX"; String secretKey = "XXXXXXXXXXXXXXXXX"; String endPointName ="cn-hangzhou"; 消息队列 MQ Open API 14 String productName ="Ons"; String domain ="ons.cn-hangzhou.aliyuncs.com"; /** *根据自己需要访问的区域选择Region,并设置对应的接入点 */ try { DefaultProfile.addEndpoint(endPointName,regionId,productName,domain); } catch (ClientException e) { e.printStackTrace(); } IClientProfile profile= DefaultProfile.getProfile(regionId,accessKey,secretKey); IAcsClient iAcsClient= new DefaultAcsClient(profile); OnsTopicGetRequest request = new OnsTopicGetRequest(); request.setAcceptFormat(FormatType.JSON); request.setTopic("MingduanTest"); /** *ONSRegionId是指需要API访问MQ哪个区域的资源. *该值必须要根据OnsRegionList方法获取的列表来选择和配置,因为OnsRegionId是变动的,不能够写固定值 */ request.setOnsRegionId("daily"); request.setPreventCache(System.currentTimeMillis()); try { OnsTopicGetResponse response = client.getAcsResponse(request); List publishInfoDoList=response.getData(); for (OnsTopicGetResponse.PublishInfoDo publishInfoDo:publishInfoDoList){ System.out.println(publishInfoDo.getId()+" "+ publishInfoDo.getChannelId()+" "+ publishInfoDo.getChannelName()+" "+ publishInfoDo.getOnsRegionId()+" "+ publishInfoDo.getRegionName()+" "+ publishInfoDo.getTopic()+" "+ publishInfoDo.getOwner()+" "+ publishInfoDo.getRelation()+" "+ publishInfoDo.getRelationName()+" "+ publishInfoDo.getStatus()+" "+ publishInfoDo.getStatusName()+" "+ publishInfoDo.getAppkey()+" "+ publishInfoDo.getCreateTime()+" "+ publishInfoDo.getUpdateTime()+" "+ publishInfoDo.getRemark()); } System.out.println(response.getRequestId()); } catch (ServerException e) { e.printStackTrace(); } catch (ClientException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } } 消息队列 MQ Open API 15 搜索 Topic 本文介绍 OnsTopicSeacrh 接口,该接口用于根据搜索条件搜索指定账号下所有的 Topic 信息列表。 1. 使用场景 该接口适用于查询 Topic 信息时没有精确的 Topic 名称的情况,一般用于获取整个 Topic 列表,在选择特定的 Topic 后基于 OnsTopicGet 接口精确查询。 2. 请求参数列表 3. 返回参数列表 PublishInfoDo 数据结构 名称 类型 是否必须 描述 OnsRegionId String 是 当前查询 MQ 所在区 域,可以通过 ONSRegionList 方法 获取,参见公共术语 OnsPlatform String 否 该请求来源,默认是从 POP 平台 PreventCache Long 是 用于 CSRF 校验,设置 为系统当前时间即可 Search String 是 输入的搜索条件,可以 是 Topic 或者 appname 等字段 名称 类型 描述 RequestId String 为公共参数,每个请求独一无二 HelpUrl String 帮助链接 Data List(PublishInfoDo) 返回所有已发布的 Topic 信息 列表 成员 类型 描述 id Long 该 Topic 信息编号 channelId Integer 该 Topic 所在区域 ID,0代表 阿里云,1代表聚石塔 channelName String 该 Topic 所在区域名称 ,ALIYUN,CLOUD,… onsRegionId Long 该 Topic 所在区域 ID,就是 ONSRegionList 方法获取的内 容 消息队列 MQ Open API 16 - - - - 4. 相关 API OnsTopicCreate:创建 Topic OnsTopicList:查看 Topic 列表 OnsPublishDelete:删除发布关系 OnsSubscribeDelete:删除订阅关系 5. 使用示例 调用示例: 本示例仅仅提供一个参考,从华东1接入点接入,查询当前用户下所有的 Topic 列表。 regionName String 该 Topic 所在区域名称 topic String Topic 名称 owner String Topic 所有者编号,为阿里云的 uid relation Integer 所有关系编号1为持有者,2为 可以发布,4为可以订阅,6为 可以发布和订阅 relationName String 所有关系名称,例如持有者、可 订阅、可发布、可发布订阅 status Integer 当前状态编号(0 服务中 1 冻结 2 暂停) statusName String 当前状态别名,服务中, appkey Integer null createTime Long 创建时间 updateTime Long 更新时间 remark String 备注信息 public static void main(String[] args) { String regionId = "cn-hangzhou"; String accessKey = "XXXXXXXXXXXXXXXXX"; String secretKey = "XXXXXXXXXXXXXXXXX"; String endPointName ="cn-hangzhou"; String productName ="Ons"; String domain ="ons.cn-hangzhou.aliyuncs.com"; /** *根据自己需要访问的区域选择Region,并设置对应的接入点 */ try { DefaultProfile.addEndpoint(endPointName,regionId,productName,domain); } catch (ClientException e) { 消息队列 MQ Open API 17 查询 Topic 状态 本文介绍 OnsTopicStatus 接口,调用该接口可以查询指定 Topic 当前的消息状态。 1. 使用场景 查询当前 Topic 下的消息总量以及最后更新时间,一般用于判断 Topic 资源的使用率。TopicStatus 接口返回 当前服务器上该 Topic 下所有的消息数,以及最后消息写入时间。 2. 请求参数列表 e.printStackTrace(); } IClientProfile profile= DefaultProfile.getProfile(regionId,accessKey,secretKey); IAcsClient iAcsClient= new DefaultAcsClient(profile); OnsTopicSearchRequest request = new OnsTopicSearchRequest(); request.setAcceptFormat(FormatType.JSON); /** *ONSRegionId是指你需要API访问MQ哪个区域的资源. *该值必须要根据OnsRegionList方法获取的列表来选择和配置,因为OnsRegionId是变动的,不能够写固定值 */ request.setOnsRegionId("daily"); request.setPreventCache(System.currentTimeMillis()); request.setSearch("JODIE_TEST_28dd"); try { OnsTopicSearchResponse response = client.getAcsResponse(request); List publishInfoDoList=response.getData(); for(OnsTopicSearchResponse.PublishInfoDo publishInfoDo:publishInfoDoList){ System.out.println(publishInfoDo.getTopic()+" "+publishInfoDo.getOwner()); } System.out.println(response.getRequestId()); } catch (ClientException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } } 名称 类型 是否必须 描述 OnsRegionId String 是 当前查询 MQ 所在区 域,可以通过 ONSRegionList 方法 获取,参见公共术语 OnsPlatform String 否 该请求来源,默认是从 POP 平台 PreventCache Long 是 用于 CSRF 校验,设置 为系统当前时间即可 消息队列 MQ Open API 18 - - 3. 返回参数列表 OnsTopicStatusResponse.Data 数据结构 4. 相关 API OnsTopicCreate:创建 Topic OnsConsumerStatus:查询订阅组的消费者状态 5. 使用示例 调用示例: 本示例仅仅提供一个参考,从华东1接入点接入,查询当前用户下名为”JODIE_TEST_27dd”的 Topic 的消息 数量。 Topic String 是 查询的 Topic 名称 名称 类型 描述 RequestId String 为公共参数,每个请求独一无二 HelpUrl String 帮助链接 Data OnsTopicStatusResponse.Dat a 查询到的 Topic 的信息存储数 据结构 成员 类型 描述 totalCount Long 当前 Topic 的所有分区存在的 消息数总和 lastTimeStamp Long 当前 Topic 的最后更新时间 public static void main(String[] args) { String regionId = "cn-hangzhou"; String accessKey = "XXXXXXXXXXXXXXXXX"; String secretKey = "XXXXXXXXXXXXXXXXX"; String endPointName ="cn-hangzhou"; String productName ="Ons"; String domain ="ons.cn-hangzhou.aliyuncs.com"; /** *根据自己需要访问的区域选择Region,并设置对应的接入点 */ try { DefaultProfile.addEndpoint(endPointName,regionId,productName,domain); } catch (ClientException e) { e.printStackTrace(); } IClientProfile profile= DefaultProfile.getProfile(regionId,accessKey,secretKey); IAcsClient iAcsClient= new DefaultAcsClient(profile); 消息队列 MQ Open API 19 消费管理相关接口 消费堆积查询 本文介绍 OnsConsumerAccumulate 接口,用于查询指定订阅组的消费堆积情况,可以获取到订阅组当前未 消费的消息数以及大概的延迟时间。 1. 使用场景 消费堆积查询一般在生产环境中需要关注订阅组消费进度时使用,用于粗略判断消息消费情况和延迟情况。 2. 请求参数列表 OnsTopicStatusRequest request = new OnsTopicStatusRequest(); request.setAcceptFormat(FormatType.JSON); /** *ONSRegionId是指你需要API访问MQ哪个区域的资源. *该值必须要根据OnsRegionList方法获取的列表来选择和配置,因为OnsRegionId是变动的,不能够写固定值 */ request.setOnsRegionId("daily"); request.setPreventCache(System.currentTimeMillis()); request.setTopic("JODIE_TEST_27dd"); try { OnsTopicStatusResponse response = client.getAcsResponse(request); OnsTopicStatusResponse.Data data=response.getData(); Long totalCount =data.getTotalCount(); Long lastTimeStamp =data.getLastTimeStamp(); System.out.println(response.getRequestId()); } catch (ClientException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } } 名称 类型 是否必须 描述 OnsRegionId String 是 当前查询 MQ 所在区 域,可以通过 ONSRegionList 方法 获取 OnsPlatform String 否 该请求来源,默认是从 POP 平台 PreventCache Long 是 用于 CSRF 校验,设置 为系统当前时间即可 消息队列 MQ Open API 20 - - - 3. 返回参数列表 Data 数据结构 DetailInTopicList 数据结构 4. 相关 API OnsConsumerStatus:消费者状态详情查询 OnsConsumerConnection:消费者连接查询 OnsResetOffset:消费清理堆积 5. 使用示例 ConsumerId String 是 需要查询的消费端 CID Detail Boolean 否 是否查询详细信息,默 认为否 名称 类型 描述 RequestId String 为公共参数,每个请求独一无二 HelpUrl String 帮助链接 Data Data 指定 Consumer 的消费堆积情 况 成员 类型 描述 OnLine Boolean 当前消费者是否在线 TotalDiff Long 当前 Consumer ID 订阅的所有 Topic 的消息总堆积数 ConsumeTps Float 当前消费 TPS LastTimestamp Long 最后更新时刻 DelayTime Long 延迟时间 DetailInTopicList List(OnsConsumerAccumulat eResponse.Data.DetailInTopi cDo) 各个 Topic 具体情况 成员 类型 描述 Topic String Topic 名称 TotalDiff Long 当前 Topic 的消费堆积 LastTimestamp Long 最后更新时刻 DelayTime Long 当前 Topic 的消费延迟时间 消息队列 MQ Open API 21 调用示例 消费状态查询 本文介绍 OnsConsumerStatus 接口,该接口可以查询指定订阅组的详细状态数据,包含订阅关系检查,消费 public static void main(String []args) { String regionId = "cn-hangzhou"; String accessKey = "XXXXXXXXXXXXXXXXX"; String secretKey = "XXXXXXXXXXXXXXXXX"; String endPointName ="cn-hangzhou"; String productName ="Ons"; String domain ="ons.cn-hangzhou.aliyuncs.com"; /** *根据自己需要访问的区域选择Region,并设置对应的接入点 */ try { DefaultProfile.addEndpoint(endPointName,regionId,productName,domain); } catch (ClientException e) { e.printStackTrace(); } IClientProfile profile= DefaultProfile.getProfile(regionId,accessKey,secretKey); IAcsClient iAcsClient= new DefaultAcsClient(profile); OnsConsumerAccumulateRequest request = new OnsConsumerAccumulateRequest(); // request.setCluster("taobaodaily"); /** *ONSRegionId是指你需要API访问MQ哪个区域的资源. *该值必须要根据OnsRegionList方法获取的列表来选择和配置,因为OnsRegionId是变动的,不能够写固定值 */ request.setOnsRegionId("daily"); request.setPreventCache(System.currentTimeMillis()); request.setAcceptFormat(FormatType.JSON); request.setDetail(true); request.setConsumerId("RTDSQ_1013_GROUP"); try { OnsConsumerAccumulateResponse response=iAcsClient.getAcsResponse(request); OnsConsumerAccumulateResponse.Data data =response.getData(); System.out.println(data.getOnline()+" "+data.getTotalDiff()+" "+data.getConsumeTps()+" " +data.getDelayTime()+" "+data.getLastTimestamp()); for (OnsConsumerAccumulateResponse.Data.DetailInTopicDo detailInTopicDo:data.getDetailInTopicList()){ System.out.println(detailInTopicDo.getTopic()+" " +detailInTopicDo.getTotalDiff()+" " +detailInTopicDo.getLastTimestamp()+" "+detailInTopicDo.getDelayTime()); } } catch (ServerException e) { e.printStackTrace(); } catch (ClientException e) { e.printStackTrace(); } } 消息队列 MQ Open API 22 TPS 统计,负载均衡状态,消费端连接等。 1. 使用场景 消费者状态查询接口用于定位订阅组的详细状态,一般用于在粗略判断消费堆积以及客户端在线情况后,需要 排查消费异常的原因时调用.可以判断出指定消费组(CID)的订阅关系是否一致,负载均衡是否正常,以及在线客 户端的 Jstack 信息等。 注意:消费者状态查询接口需要调用后端大量接口完成数据聚合,因此查询速度慢,不建议频繁调用。 2. 请求参数列表 3. 返回参数列表 ConsumerStatusDo 数据结构 名称 类型 是否必须 描述 OnsRegionId String 是 当前查询 MQ 所在区 域,可以通过 ONSRegionList 方法 获取 OnsPlatform String 否 该请求来源,默认是从 POP 平台 PreventCache Long 是 用于 CSRF 校验,设置 为系统当前时间即可 ConsumerId String 是 需要查询的消费端 CID Detail Boolean 否 是否查询详细信息 NeedJstack Boolean 否 是否打印 JStack 信息 名称 类型 描述 RequestId String 为公共参数,每个请求独一无二 HelpUrl String 帮助链接 Data ConsumerStatusDo 查询结果 成员 类型 描述 Online Boolean 是否在线 TotalDiff Long 集群总的消费堆积 ConsumeTps Long 总消费 TPS LastTimestamp Long 最后更新时间 DelayTime Long 延迟时间 ConsumeModel Long 消费模型 消息队列 MQ Open API 23 ConnectionDo 数据结构 DetailInTopicDo 数据结构 ConsumerConnectionInfoDo 数据结构 SubscriptionSame Boolean 订阅关系是否一致 RebalanceOK Boolean 客户端 Rebalance 是否正常 ConnectionSet List(ConnectionDo) 该集群当前在线客户端信息 DetailInTopicList List(DetailInTopicDo) 各个 Topic 的消费情况 ConsumerConnectionInfoList List(ConsumerConnectionInf oDo) 该集群在线客户端详细信息,包 含 Jstack、消费 RT 时间等信息 成员 类型 描述 ClientId String 消费实例的 ID ClientAddr String 该消费实例的地址和端口 Language String 消费端语言 Version String 消费端版本 成员 类型 描述 Topic String Topic 名称 TotalDiff Long 该 Topic 消费总堆积数 LastTimestamp Long 最后更新时间 DelayTime Long 延迟时间 成员 类型 描述 ClientId String 消费实例的 ID Connection String 连接信息 Language String 客户端语言 Version String 客户端版本号 ConsumeModel String 消费类型,集群和广播两种 ConsumeType String 从何处消费 ThreadCount Integer 消费线程数 StartTimeStamp Long 开始时间 LastTimeStamp Long 最后更新时间 SubscriptionSet List(SubscriptionData) 订阅关系集合 RunningDataList List(ConsumerRunningDataD o) 实时状态统计 消息队列 MQ Open API 24 - - SubscriptionData 数据结构 ConsumerRunningDataDo 数据结构 ThreadTrackDo 数据结构 4. 相关 API OnsConsumerAccumulate:查询消费堆积 OnsConsumerConnection:查询消费方客户端连接 5. 使用示例 调用示例 Jstack List(ThreadTrackDo) Jstack 堆栈信息 成员 类型 描述 Topic String 订阅的 Topic 名称 SubString String 订阅该 Topic 的子类别 Tag 表 达式 SubVersion Long 订阅关系版本号,为自增 long 型 TagsSet List(String) 订阅的 Tag 集合 成员 类型 描述 ConsumerId String 订阅方的 ConsumerId 名称 Topic String 订阅的 Topic 名称 Rt Float 消费 RT 时间,单位 ms OkTps Float 消费消息成功的 TPS 统计 FailedTps Float 消费消息失败的 TPS 统计 FailedCountPerHour Long 每小时内消费失败的消息数统计 成员 类型 描述 Thread String 线程名称 TrackList List(String) Jstack 堆栈信息字符串 public static void main(String []args) { String regionId = "cn-hangzhou"; String accessKey = "XXXXXXXXXXXXXXXXX"; String secretKey = "XXXXXXXXXXXXXXXXX"; 消息队列 MQ Open API 25 消费者连接查询 本文介绍 OnsConsumerConnection 接口,用于查询指定订阅组(CID)下当前客户端的连接情况。 1. 使用场景 一般用于判断指定 CID 的消费者是否在线,并获取详细的客户端连接的列表。 2. 请求参数列表 String endPointName ="cn-hangzhou"; String productName ="Ons"; String domain ="ons.cn-hangzhou.aliyuncs.com"; /** *根据自己需要访问的区域选择Region,并设置对应的接入点 */ try { DefaultProfile.addEndpoint(endPointName,regionId,productName,domain); } catch (ClientException e) { e.printStackTrace(); } IClientProfile profile= DefaultProfile.getProfile(regionId,accessKey,secretKey); IAcsClient iAcsClient= new DefaultAcsClient(profile); OnsConsumerStatusRequest request = new OnsConsumerStatusRequest(); /** *ONSRegionId是指你需要API访问MQ哪个区域的资源. *该值必须要根据OnsRegionList方法获取的列表来选择和配置,因为OnsRegionId是变动的,不能够写固定值 */ request.setOnsRegionId("daily"); request.setPreventCache(System.currentTimeMillis()); request.setAcceptFormat(FormatType.JSON); request.setConsumerId("CID_Mingduan"); request.setDetail(true); request.setNeedJstack(false); try { OnsConsumerStatusResponse response=iAcsClient.getAcsResponse(request); OnsConsumerStatusResponse.Data data =response.getData(); List connectionDoList = data.getConnectionSet(); List detailInTopicDoList =data.getDetailInTopicList(); List consumerConnectionInfoDoList =data.getConsumerConnectionInfoList(); System.out.print(data.getOnline()+" "+data.getTotalDiff()+" "+data.getConsumeTps()+" "+ data.getLastTimestamp()+" "+data.getDelayTime()+" "+data.getConsumeModel()+ " "+data.getSubscriptionSame()+" "+data.getRebalanceOK()); } catch (ServerException e) { e.printStackTrace(); } catch (ClientException e) { e.printStackTrace(); } } 名称 类型 是否必须 描述 消息队列 MQ Open API 26 - - 3. 返回参数列表 ConnectionDo 数据结构 4. 相关 API OnsConsumerStatus:消费者状态查询 OnsConsumerAccumulate:消费堆积查询 5. 使用示例 调用示例 OnsRegionId String 是 当前查询 MQ 所在区 域,可以通过 ONSRegionList 方法 获取 OnsPlatform String 否 该请求来源,默认是从 POP 平台 PreventCache Long 是 用于 CSRF 校验,设置 为系统当前时间即可 ConsumerId String 是 需要查询的消费端 CID 名称 类型 描述 RequestId String 为公共参数,每个请求独一无二 HelpUrl String 帮助链接 Data List(ConnectionDo) 指定 Consumer 的连接信息 成员 类型 描述 ClientId String 消费实例的 ID ClientAddr String 该消费实例的地址和端口 Language String 消费端语言 Version String 消费端版本 public static void main(String []args) { String regionId = "cn-hangzhou"; String accessKey = "XXXXXXXXXXXXXXXXX"; String secretKey = "XXXXXXXXXXXXXXXXX"; String endPointName ="cn-hangzhou"; String productName ="Ons"; String domain ="ons.cn-hangzhou.aliyuncs.com"; /** 消息队列 MQ Open API 27 消费更新查询 本文介绍 OnsConsumerTimeSpan 接口,该接口提供查询当前订阅组订阅的 Topic 的最新消息时间戳以及消 费的最新时间戳。 1. 使用场景 使用本接口可以解决查询某个 Topic 当前服务器上存在的消息的最新时间以及最早时间,以及查询消费端最近 消费的时间的需求。一般用于展示消费进度的概况,和 ConsumeAccumulate 接口配合使用。 2. 请求参数列表 *根据自己需要访问的区域选择Region,并设置对应的接入点 */ try { DefaultProfile.addEndpoint(endPointName,regionId,productName,domain); } catch (ClientException e) { e.printStackTrace(); } IClientProfile profile= DefaultProfile.getProfile(regionId,accessKey,secretKey); IAcsClient iAcsClient= new DefaultAcsClient(profile); OnsConsumerGetConnectionRequest request = new OnsConsumerGetConnectionRequest(); /** *ONSRegionId是指你需要API访问MQ哪个区域的资源. *该值必须要根据OnsRegionList方法获取的列表来选择和配置,因为OnsRegionId是变动的,不能够写固定值 */ request.setOnsRegionId("daily"); request.setPreventCache(System.currentTimeMillis()); request.setAcceptFormat(FormatType.JSON); request.setConsumerId("RTDSQ_1013_GROUP"); try { OnsConsumerGetConnectionResponse response=iAcsClient.getAcsResponse(request); List connectionDoList=response.getData().getConnectionList(); for(OnsConsumerGetConnectionResponse.Data.ConnectionDo connectionDo:connectionDoList){ System.out.println(connectionDo.getClientId()+" "+ connectionDo.getClientAddr()+" "+ connectionDo.getLanguage()+" "+ connectionDo.getVersion()); } } catch (ServerException e) { e.printStackTrace(); } catch (ClientException e) { e.printStackTrace(); } } 名称 类型 是否必须 描述 OnsRegionId String 是 当前查询 MQ 所在区 域,可以通过 ONSRegionList 方法 消息队列 MQ Open API 28 - - - 3. 返回参数列表 Data 数据结构 4. 相关 API OnsConsumerAccumulate:查询消费堆积 OnsConsumerStatus:查询消费端详情 OnsConsumerResetOffset:重置位点和清除消息 5. 使用示例 调用示例 获取 OnsPlatform String 否 该请求来源,默认是从 POP 平台 PreventCache Long 是 用于 CSRF 校验,设置 为系统当前时间即可 ConsumerId String 是 需要查询的消费端 CID Topic String 是 需要查询的消费的 Topic 名称 类型 描述 RequestId String 为公共参数,每个请求独一无二 HelpUrl String 帮助链接 Data Data 查询结果 成员 类型 描述 Topic String 查询的 Topic 名称 MinTimeStamp Long 整个 Topic 目前存储的最新的 消息的时间 MaxTimeStamp Long 整个 Topic 目前存储的最老的 消息的时间 ConsumeTimeStamp Long 当前 group 消费该 Topic 的最 新的时间 public static void main(String []args) { String regionId = "cn-hangzhou"; String regionId = "cn-hangzhou"; String accessKey = "XXXXXXXXXXXXXXXXX"; String secretKey = "XXXXXXXXXXXXXXXXX"; 消息队列 MQ Open API 29 消息管理相关接口 消息轨迹查询 本文档介绍 OnsMessageTrack 接口,该接口用于判断目标 MsgId 对应的消息是否已经消费过。 1. 使用场景 MessageTrack 接口一般用于判断指定的消息是否曾经被消费过,查询条件为单条消息的 MsgId。需要注意的 String endPointName ="cn-hangzhou"; String productName ="Ons"; String domain ="ons.cn-hangzhou.aliyuncs.com"; /** *根据自己需要访问的区域选择Region,并设置对应的接入点 */ try { DefaultProfile.addEndpoint(endPointName,regionId,productName,domain); } catch (ClientException e) { e.printStackTrace(); } IClientProfile profile= DefaultProfile.getProfile(regionId,accessKey,secretKey); IAcsClient iAcsClient= new DefaultAcsClient(profile); OnsConsumerTimeSpanRequest request = new OnsConsumerTimeSpanRequest(); /** *ONSRegionId是指你需要API访问MQ哪个区域的资源. *该值必须要根据OnsRegionList方法获取的列表来选择和配置,因为OnsRegionId是变动的,不能够写固定值 */ request.setOnsRegionId("daily"); request.setPreventCache(System.currentTimeMillis()); request.setAcceptFormat(FormatType.JSON); request.setConsumerId("CID_Mingduan"); request.setTopic("MingduanTest12"); try { OnsConsumerTimeSpanResponse response=iAcsClient.getAcsResponse(request); OnsConsumerTimeSpanResponse.Data data =response.getData(); System.out.println(data.getTopic()+"\n"+ data.getConsumeTimeStamp()+"\n"+ data.getMaxTimeStamp()+"\n"+ data.getMinTimeStamp()); } catch (ServerException e) { e.printStackTrace(); } catch (ClientException e) { e.printStackTrace(); } } 消息队列 MQ Open API 30 - 是 MessagTrack 的实现基于 MQ 的内部位点机制,在大部分场景下判断结果可信,但如果应用方进行过重置 位点已经清除消息等操作,则判断结果可能有误。 2. 请求参数列表 3. 返回参数列表 MessageTrack 数据结构 4. 相关 API OnsMessageGetByMsgId:根据 MsgId 精确查询消息 5. 使用示例 调用示例 名称 类型 是否必须 描述 OnsRegionId String 是 当前查询 MQ 所在区 域,可以通过 OnsRegionList 方法 获取 OnsPlatform String 否 该请求来源,默认是从 POP 平台 PreventCache Long 是 用于 CSRF 校验,设置 为系统当前时间即可 Topic String 是 消息的 Topic MsgId String 是 消息 ID 名称 类型 描述 RequestId String 为公共参数,每个请求独一无二 HelpUrl String 帮助链接 Data List(MessageTrack) 查询结果 名称 类型 描述 ConsumerGroup String 消费集群名称 TrackType String 当前状态 ExceptionDesc String 异常描述 public static void main(String []args) { String regionId = "cn-hangzhou"; 消息队列 MQ Open API 31 根据 Key 查询消息 本文档介绍 OnsMessageGetByMsgKey 接口,该接口通过传入 Topic 和 MsgKey 进行模糊查询,得到符合 条件的消息的信息列表。 1. 使用场景 根据 MsgKey 查询消息属于模糊查询,由于业务方的 key 可能不唯一,所以查询结果可能为多条。一般用在业 务方无法获取 MsgId 的场景下,先进行模糊查询得到 msgId 列表,再调用 OnsMessageGetByMsgId 接口查 询。 2. 请求参数列表 String accessKey = "XXXXXXXXXXXXXXXXX"; String secretKey = "XXXXXXXXXXXXXXXXX"; String endPointName ="cn-hangzhou"; String productName ="Ons"; String domain ="ons.cn-hangzhou.aliyuncs.com"; /** *根据自己需要访问的区域选择Region,并设置对应的接入点 */ try { DefaultProfile.addEndpoint(endPointName,regionId,productName,domain); } catch (ClientException e) { e.printStackTrace(); } IClientProfile profile= DefaultProfile.getProfile(regionId,accessKey,secretKey); IAcsClient iAcsClient= new DefaultAcsClient(profile); OnsMessageTraceRequest request = new OnsMessageTraceRequest(); /** *ONSRegionId是指你需要API访问MQ哪个区域的资源. *该值必须要根据OnsRegionList方法获取的列表来选择和配置,因为OnsRegionId是变动的,不能够写固定值 */ request.setOnsRegionId("daily"); request.setPreventCache(System.currentTimeMillis()); request.setAcceptFormat(FormatType.JSON); request.setTopic("MingduanTest"); request.setMsgId("0A91883700001F90000001BF4723CB3E"); try { OnsMessageTraceResponse response=iAcsClient.getAcsResponse(request); List trackList =response.getData(); for (OnsMessageTraceResponse.MessageTrack track:trackList){ System.out.println(track.getConsumerGroup()+" "+track.getTrackType()+" "+track.getExceptionDesc()); } } catch (ServerException e) { e.printStackTrace(); } catch (ClientException e) { e.printStackTrace(); } } 消息队列 MQ Open API 32 3. 返回参数列表 OnsRestMessageDo 数据结构 4. 相关 API 名称 类型 是否必须 描述 OnsRegionId String 是 当前查询 MQ 所在区 域,可以通过 OnsRegionList 方法 获取 OnsPlatform String 否 该请求来源,默认是从 POP 平台 PreventCache Long 是 用于 CSRF 校验,设置 为系统当前时间即可 Topic String 是 需要查询的消息的 Topic Key String 是 需要查询的消息的 MsgKey 名称 类型 描述 RequestId String 为公共参数,每个请求独一无二 HelpUrl String 帮助链接 Data List(OnsRestMessageDo) 查询结果 名称 类型 描述 Topic String 消息的 Topic Flag Integer null PropertyList List(MessageProperty) 消息属性列表 Body String 消息体 StoreSize Integer 消息大小 BornTimestamp Long 生成时间戳 BornHost String 生成该消息的客户端实例 StoreTimestamp Long 被 Broker 存储的时间戳 StoreHost String 存储该消息的服务器实例 MsgId String 消息 ID BodyCRC Integer 消息体 CRC 校验值 ReconsumeTimes Integer 消息重试消费的次数 消息队列 MQ Open API 33 - - OnsMesageGetByMsgId:根据 MsgId 精确查询消息 OnsMessageGetByTopic:根据 Topic 进行时间范围查询 5. 使用示例 调用示例 public static void main(String []args) { String regionId = "cn-hangzhou"; String accessKey = "XXXXXXXXXXXXXXXXX"; String secretKey = "XXXXXXXXXXXXXXXXX"; String endPointName ="cn-hangzhou"; String productName ="Ons"; String domain ="ons.cn-hangzhou.aliyuncs.com"; /** *根据自己需要访问的区域选择Region,并设置对应的接入点 */ try { DefaultProfile.addEndpoint(endPointName,regionId,productName,domain); } catch (ClientException e) { e.printStackTrace(); } IClientProfile profile= DefaultProfile.getProfile(regionId,accessKey,secretKey); IAcsClient iAcsClient= new DefaultAcsClient(profile); OnsMessageGetByKeyRequest request = new OnsMessageGetByKeyRequest(); /** *ONSRegionId是指你需要API访问MQ哪个区域的资源. *该值必须要根据OnsRegionList方法获取的列表来选择和配置,因为OnsRegionId是变动的,不能够写固定值 */ request.setOnsRegionId("daily"); request.setPreventCache(System.currentTimeMillis()); request.setAcceptFormat(FormatType.JSON); request.setTopic("MingduanTest"); request.setKey("hello"); try { OnsMessageGetByKeyResponse response = iAcsClient.getAcsResponse(request); List onsRestMessageDoList=response.getData(); for(OnsMessageGetByKeyResponse.OnsRestMessageDo onsRestMessageDo:onsRestMessageDoList){ byte[] messageBody = Base64.decode(onsRestMessageDo.getBody()); String message =new String (messageBody); System.out.println(onsRestMessageDo.getTopic()+" "+message+" "+ onsRestMessageDo.getFlag()+" "+ onsRestMessageDo.getBornHost()+" "+ onsRestMessageDo.getStoreSize()+" "+ onsRestMessageDo.getStoreHost()+" "+ onsRestMessageDo.getStoreTimestamp()+" "+ onsRestMessageDo.getReconsumeTimes()); } } catch (ServerException e) { e.printStackTrace(); } catch (ClientException e) { e.printStackTrace(); 消息队列 MQ Open API 34 根据 MsgID 查询消息 本文介绍 OnsMessageGetByMsgId 接口,该接口通过传入 MsgId 查询指定消息的信息,包括发送时间,存 储服务器,消息的 Key 和 Tag 等熟悉,以及是否被消费过的判断。 1. 使用场景 消息查询功能用于判断消息是否发送成功,发送时间以及目标服务器等信息。 根据 MsgId 查询消息属于精确查询,查询条件需要的 MsgId 由每次发送成功的 SendResult 中获取,因此业 务方必须存储每次发送消息的结果。 2. 请求参数列表 3. 返回参数列表 Data 数据结构 } 名称 类型 是否必须 描述 OnsRegionId String 是 当前查询 MQ 所在区 域,可以通过 OnsRegionList 方法 获取 OnsPlatform String 否 该请求来源,默认是从 POP 平台 PreventCache Long 是 用于 CSRF 校验,设置 为系统当前时间即可 MsgId String 是 需要查询的消息的 MsgId Topic String 是 需要查询的消息的 Topic 名称 类型 描述 RequestId String 为公共参数,每个请求独一无二 HelpUrl String 帮助链接 Data Data 查询结果 名称 类型 描述 Topic String 消息的 Topic Flag Integer null 消息队列 MQ Open API 35 - - 4. 相关 API OnsMessageGetByMsgKey:根据 MsgKey 模糊匹配查询消息 OnsMessageGetByTopic:根据 Topic 和时间范围查询消息 5. 使用示例 调用示例 PropertyList List(MessageProperty) 消息属性列表 Body String 消息体 StoreSize Integer 消息大小 BornTimestamp Long 生成时间戳 BornHost String 生成该消息的客户端实例 StoreTimestamp Long 被服务端存储的时间戳 StoreHost String 存储该消息的服务器实例 MsgId String 消息 ID BodyCRC Integer 消息体 CRC 校验值 ReconsumeTimes Integer 消息重试消费的次数 public static void main(String []args) { String regionId = "cn-hangzhou"; String accessKey = "XXXXXXXXXXXXXXXXX"; String secretKey = "XXXXXXXXXXXXXXXXX"; String endPointName ="cn-hangzhou"; String productName ="Ons"; String domain ="ons.cn-hangzhou.aliyuncs.com"; /** *根据自己需要访问的区域选择Region,并设置对应的接入点 */ try { DefaultProfile.addEndpoint(endPointName,regionId,productName,domain); } catch (ClientException e) { e.printStackTrace(); } IClientProfile profile= DefaultProfile.getProfile(regionId,accessKey,secretKey); IAcsClient iAcsClient= new DefaultAcsClient(profile); OnsMessageGetByMsgIdRequest request = new OnsMessageGetByMsgIdRequest(); /** *ONSRegionId是指你需要API访问MQ哪个区域的资源. *该值必须要根据OnsRegionList方法获取的列表来选择和配置,因为OnsRegionId是变动的,不能够写固定值 */ request.setOnsRegionId("daily"); request.setPreventCache(System.currentTimeMillis()); 消息队列 MQ Open API 36 - - 根据 Topic 查询消息 本文介绍 OnsMessagePageQueryByTopic 接口,该接口通过传入 Topic 和时间段,分页查询指定时间段内 存在的所有消息。 1. 使用场景 根据 Topic 查询消息属于范围查询,查询结果会通过分页的方式展示给调用方,仅适用于没有任何搜索条件 (MsgId 和 MsgKey)情况下的查询。 注意:根据 Topic 查询,需要尽可能缩短查询的时间区间,否则匹配的消息过多,将无法定位问题。 2. 调用方式 首先,传入 Topic,起止时间,以及每页的大小,进行分页查询,如果有消息,默认返回第一页的消 息以及总页数和查询 Task ID。 根据返回的结果中的查询 Task ID,进行后续取消息,取消息时传入 Task ID 以及当前页数。 3. 请求参数列表 request.setAcceptFormat(FormatType.JSON); request.setMsgId("0ADA91A600002A9F000002ADDA8137E8"); request.setTopic("TopicTest"); try { OnsMessageGetByMsgIdResponse response = iAcsClient.getAcsResponse(request); OnsMessageGetByMsgIdResponse.Data data =response.getData(); byte[] msgbody= Base64.decode(data.getBody()); String message= new String(msgbody); System.out.println(data.getTopic()+" "+ message+" "+ data.getFlag()+" "+ data.getBornHost()+" "+ data.getStoreSize()+" "+ data.getStoreHost()+" "+ data.getStoreTimestamp()+" “+ data.getReconsumeTimes()); } catch (ServerException e) { e.printStackTrace(); } catch (ClientException e) { e.printStackTrace(); } } 名称 类型 是否必须 描述 OnsRegionId String 是 当前查询 MQ 所在区 域,可以通过 OnsRegionList 方法 获取 OnsPlatform String 否 该请求来源,默认是从 消息队列 MQ Open API 37 - - 4. 返回参数列表 MsgFoundDo 数据结构 5. 相关 API OnsMessageGetByMsgId:根据 MsgId 精确查询消息 OnsMessageGetByMsgKey:根据 MsgKey 模糊查询消息 POP 平台 PreventCache Long 是 用于 CSRF 校验,设置 为系统当前时间即可 Topic String 是 需要查询的消息的 Topic BeginTime Long 是 查询范围的起始时间戳 EndTime Long 是 查询范围的终止时间戳 TaskId String 否 查询任务的 ID,首次 查询不需要输入,后续 取消息必须传入,根据 第一次的返回结果取出 该字段 CurrentPage Integer 是 当前取第几页消息,从 1开始递增,取消息时 不可超过最大页数 PageSize Integer 否 分页查询,每页最多显 示消息数量,默认是 20,最小5条,最多 50条 名称 类型 描述 RequestId String 为公共参数,每个请求独一无二 HelpUrl String 帮助链接 MsgFoundDo MsgFoundDo 查询结果 名称 类型 描述 TaskId String 第一次新建查询时,返回的 Task ID,用于后续取消息用 MaxPageCount Long 查询结果最大页数 CurrentPage Long 当前位于第几页 Data List(OnsRestMessageDo) 当前页的消息集合,该类型与 messageGetById 的返回结果 一致 消息队列 MQ Open API 38 6. 使用示例 新建查询调用示例 分页取消息调用示例 public static void main(String []args) { String regionId = "cn-hangzhou"; String accessKey = "XXXXXXXXXXXXXXXXX"; String secretKey = "XXXXXXXXXXXXXXXXX"; String endPointName ="cn-hangzhou"; String productName ="Ons"; String domain ="ons.cn-hangzhou.aliyuncs.com"; /** *根据自己需要访问的区域选择Region,并设置对应的接入点 */ try { DefaultProfile.addEndpoint(endPointName,regionId,productName,domain); } catch (ClientException e) { e.printStackTrace(); } IClientProfile profile= DefaultProfile.getProfile(regionId,accessKey,secretKey); IAcsClient iAcsClient= new DefaultAcsClient(profile); OnsMessagePageQueryByTopicRequest request = new OnsMessagePageQueryByTopicRequest(); /** *ONSRegionId是指你需要API访问MQ哪个区域的资源. *该值必须要根据OnsRegionList方法获取的列表来选择和配置,因为OnsRegionId是变动的,不能够写固定值 */ request.setOnsRegionId("daily"); request.setPreventCache(System.currentTimeMillis()); request.setAcceptFormat(FormatType.JSON); request.setTopic("MingduanTest"); request.setBeginTime(System.currentTimeMillis()-24*3600*1000); request.setEndTime(System.currentTimeMillis()); request.setCurrentPage(1); request.setPageSize(20); try { OnsMessagePageQueryByTopicResponse response = iAcsClient.getAcsResponse(request); } catch (ServerException e) { e.printStackTrace(); } catch (ClientException e) { e.printStackTrace(); } } public static void main(String []args) { String regionId = "cn-hangzhou"; String accessKey = "XXXXX"; String secretKey = "XXXXX"; IClientProfile profile = DefaultProfile.getProfile(regionId, accessKey, secretKey); IAcsClient iAcsClient = new DefaultAcsClient(profile); 消息队列 MQ Open API 39 发布管理相关接口 发布信息查询 本文介绍 OnsPublishGet 接口,调用该接口查询指定 PID 的详细信息。 1. 使用场景 调用 OnsPublishGet 接口一般用于发布信息的展示和查询。 2. 请求参数列表 OnsMessagePageQueryByTopicRequest request = new OnsMessagePageQueryByTopicRequest(); /** *ONSRegionId是指你需要API访问MQ哪个区域的资源. *该值必须要根据OnsRegionList方法获取的列表来选择和配置,因为OnsRegionId是变动的,不能够写固定值 */ request.setOnsRegionId("daily"); request.setPreventCache(System.currentTimeMillis()); request.setAcceptFormat(FormatType.JSON); request.setTopic("MingduanTest"); request.setBeginTime(System.currentTimeMillis()-24*3600*1000); request.setEndTime(System.currentTimeMillis()); request.setCurrentPage(3); request.setTaskId("0ADA91A600002A9F000002ADDA8137E8"); try { OnsMessagePageQueryByTopicResponse response = iAcsClient.getAcsResponse(request); } catch (ServerException e) { e.printStackTrace(); } catch (ClientException e) { e.printStackTrace(); } } 名称 类型 是否必须 描述 OnsRegionId String 是 当前查询 MQ 所在区 域,可以通过 OnsRegionList 方法 获取 OnsPlatform String 否 该请求来源,默认是从 POP 平台 PreventCache Long 是 用于 CSRF 校验,设置 为系统当前时间即可 ProducerId String 是 需要查询的发布关系的 PID 消息队列 MQ Open API 40 - 3. 返回参数列表 PublishInfoDo 数据结构 4. 相关 API OnsPublishDelete:删除发布关系 Topic String 是 需要查询的 Topic 名称 类型 描述 RequestId String 为公共参数,每个请求独一无二 HelpUrl String 帮助链接 Data List(PublishInfoDo) 查询结果集合 成员 类型 描述 id Long 该发布信息在数据库中的 ID channelId Integer 该 Topic 所在区域 ID,0- ALIYUN,1-CLOUD,2,3,4 channelName String 该 Topic 所在区域名称 ,ALIYUN 代表阿里云 ,CLOUD 代表聚石塔,… onsRegionId Long 该 Topic 所在区域 ID,就是 ONSRegionList 方法获取的内 容 regionName String 该 Topic 所在区域名称 topic String Topic 名称 owner String Topic 所有者编号 relation Integer 所有关系编号1为持有者,2为 可以发布,4为可以订阅,6为 可以发布和订阅 relationName String 所有关系名称,例如持有者、可 订阅、可发布、可发布订阅 status Integer 当前状态编号0—服务中 statusName String 当前状态别名,服务中, appkey Integer null createTime Long 创建时间 updateTime Long 更新时间 remark String 备注,可以不填 消息队列 MQ Open API 41 - - OnsPublishList:获取发布关系列表 OnsPublishCreate:新建发布关系 5. 使用示例 调用示例 以下示例用于查询 daily 区域名为 PID_Mingduan 的 PID 信息,并打印主要属性。 public static void main(String []args) { String regionId = "cn-hangzhou"; String accessKey = "XXXXXXXXXXXXXXXXX"; String secretKey = "XXXXXXXXXXXXXXXXX"; String endPointName ="cn-hangzhou"; String productName ="Ons"; String domain ="ons.cn-hangzhou.aliyuncs.com"; /** *根据自己需要访问的区域选择Region,并设置对应的接入点 */ try { DefaultProfile.addEndpoint(endPointName,regionId,productName,domain); } catch (ClientException e) { e.printStackTrace(); } IClientProfile profile= DefaultProfile.getProfile(regionId,accessKey,secretKey); IAcsClient iAcsClient= new DefaultAcsClient(profile); OnsPublishGetRequest request = new OnsPublishGetRequest(); /** *ONSRegionId是指你需要API访问MQ哪个区域的资源. *该值必须要根据OnsRegionList方法获取的列表来选择和配置,因为OnsRegionId是变动的,不能够写固定值 */ request.setOnsRegionId("daily"); request.setPreventCache(System.currentTimeMillis()); request.setAcceptFormat(FormatType.JSON); request.setTopic("MingduanTest"); request.setProducerId("PID_Mingduan"); try { OnsPublishGetResponse response=iAcsClient.getAcsResponse(request); List publishInfoDoList =response.getData(); for (OnsPublishGetResponse.PublishInfoDo publishInfoDo:publishInfoDoList){ System.out.println(publishInfoDo.getId()+" "+ publishInfoDo.getChannelId()+" "+ publishInfoDo.getChannelName()+" "+ publishInfoDo.getOnsRegionId()+" "+ publishInfoDo.getRegionName()+" "+ publishInfoDo.getOwner()+" "+ publishInfoDo.getProducerId()+" "+ publishInfoDo.getTopic()+" "+ publishInfoDo.getStatus()+" "+ publishInfoDo.getStatusName()+" "+ publishInfoDo.getCreateTime()+" "+ publishInfoDo.getUpdateTime()); 消息队列 MQ Open API 42 发布信息列表 本文介绍 OnsPublishList 接口,调用该接口获取指定用户所拥有的所有发布关系。 1. 使用场景 OnsPublishList 接口一般用于展示用户所拥有的发布关系列表。 2. 请求参数列表 3. 返回参数 PublishInfoDo 数据结构 } } catch (ServerException e) { e.printStackTrace(); } catch (ClientException e) { e.printStackTrace(); } } 名称 类型 是否必须 描述 OnsRegionId String 是 当前查询 MQ 所在区 域,可以通过 OnsRegionList 方法 获取 OnsPlatform String 否 该请求来源,默认是从 POP 平台 PreventCache Long 是 用于 CSRF 校验,设置 为系统当前时间即可 名称 类型 描述 RequestId String 为公共参数,每个请求独一无二 HelpUrl String 帮助链接 Data List(PublishInfoDo) 查询结果集合 成员 类型 描述 id Long 该发布信息在数据库中的 ID channelId Integer 该 Topic 所在区域 ID,0- ALIYUN,1-CLOUD,2,3,4 channelName String 该 Topic 所在区域名称 ,ALIYUN 代表阿里云 ,CLOUD 代表聚石塔,… 消息队列 MQ Open API 43 - - - 4. 相关 API OnsPublishDelete:删除发布关系 OnsPublishGet:查询发布关系 OnsPublishCreate:新建发布关系 5. 使用示例 调用示例 本示例用于查询用户在 daily 区域下的所有 PID 的列表,并打印。 onsRegionId Long 该 Topic 所在区域 ID,就是 ONSRegionList 方法获取的内 容 regionName String 该 Topic 所在区域名称 topic String Topic 名称 owner String Topic 所有者编号 relation Integer 所有关系编号1为持有者,2为 可以发布,4为可以订阅,6为 可以发布和订阅 relationName String 所有关系名称,例如持有者、可 订阅、可发布、可发布订阅 status Integer 当前状态编号0-服务中 statusName String 当前状态别名,服务中 appkey Integer null createTime Long 创建时间 updateTime Long 更新时间 remark String 备注,可以不填 public static void main(String []args) { String regionId = "cn-hangzhou"; String accessKey = "XXXXXXXXXXXXXXXXX"; String secretKey = "XXXXXXXXXXXXXXXXX"; String endPointName ="cn-hangzhou"; String productName ="Ons"; String domain ="ons.cn-hangzhou.aliyuncs.com"; /** *根据自己需要访问的区域选择Region,并设置对应的接入点 */ try { DefaultProfile.addEndpoint(endPointName,regionId,productName,domain); 消息队列 MQ Open API 44 发布信息搜索 本文介绍 OnsPublishSearch 接口,调用该接口根据搜索条件查询相关的发布关系。 1. 使用场景 OnsPublishSearch 接口一般用在用户账号下 PID 太多无法同时展现时,根据关键字搜索符合条件的发布关系 ,展现的数据格式和 OnsPublishGet 接口一致。 2. 请求参数列表 } catch (ClientException e) { e.printStackTrace(); } IClientProfile profile= DefaultProfile.getProfile(regionId,accessKey,secretKey); IAcsClient iAcsClient= new DefaultAcsClient(profile); OnsPublishListRequest request = new OnsPublishListRequest(); /** *ONSRegionId是指你需要API访问MQ哪个区域的资源. *该值必须要根据OnsRegionList方法获取的列表来选择和配置,因为OnsRegionId是变动的,不能够写固定值 */ request.setOnsRegionId("daily"); request.setPreventCache(System.currentTimeMillis()); request.setAcceptFormat(FormatType.JSON); try { OnsPublishListResponse response=iAcsClient.getAcsResponse(request); List publishInfoDoList =response.getData(); for (OnsPublishListResponse.PublishInfoDo publishInfoDo:publishInfoDoList){ System.out.println(publishInfoDo.getId()+" "+ publishInfoDo.getChannelId()+" "+ publishInfoDo.getChannelName()+" "+ publishInfoDo.getOnsRegionId()+" "+ publishInfoDo.getRegionName()+" "+ publishInfoDo.getOwner()+" "+ publishInfoDo.getProducerId()+" "+ publishInfoDo.getTopic()+" "+ publishInfoDo.getStatus()+" "+ publishInfoDo.getStatusName()+" "+ publishInfoDo.getCreateTime()+" "+ publishInfoDo.getUpdateTime()); } } catch (ServerException e) { e.printStackTrace(); } catch (ClientException e) { e.printStackTrace(); } } 名称 类型 是否必须 描述 OnsRegionId String 是 当前查询 MQ 所在区 域,可以通过 消息队列 MQ Open API 45 3. 返回参数列表 PublishInfoDo数据结构 OnsRegionList 方法 获取 OnsPlatform String 否 该请求来源,默认是从 POP 平台 PreventCache Long 是 用于 CSRF 校验,设置 为系统当前时间即可 Search String 是 搜索的关键词,可以是 Topic 或者 PID 名称 类型 描述 RequestId String 为公共参数,每个请求独一无二 HelpUrl String 帮助链接 Data List(PublishInfoDo) 查询结果集合 成员 类型 描述 id Long 该发布信息在数据库中的 ID channelId Integer 该 Topic 所在区域 ID,0- ALIYUN,1-CLOUD,2,3,4 channelName String 该 Topic 所在区域名称 ,ALIYUN 代表阿里云 ,CLOUD 代表聚石塔,… onsRegionId Long 该 Topic 所在区域 ID,就是 ONSRegionList 方法获取的内 容 regionName String 该 Topic 所在区域名称 topic String Topic 名称 owner String Topic 所有者编号 relation Integer 所有关系编号1为持有者,2为 可以发布,4为可以订阅,6为 可以发布和订阅 relationName String 所有关系名称,例如持有者、可 订阅、可发布、可发布订阅 status Integer 当前状态编号0-服务中 statusName String 当前状态别名,服务中 appkey Integer null createTime Long 创建时间 消息队列 MQ Open API 46 - - - 4. 相关 API OnsPublishDelete:删除发布关系 OnsPublishGet:查询发布关系 OnsPublishCreate:新建发布关系 5. 使用示例 调用示例 本示例以 PID_Mingduan 为搜索条件搜索 daily 区域下相关的 PID 信息,并将结果打印。 updateTime Long 更新时间 remark String 备注,可以不填 public static void main(String []args) { String regionId = "cn-hangzhou"; String accessKey = "XXXXXXXXXXXXXXXXX"; String secretKey = "XXXXXXXXXXXXXXXXX"; String endPointName ="cn-hangzhou"; String productName ="Ons"; String domain ="ons.cn-hangzhou.aliyuncs.com"; /** *根据自己需要访问的区域选择Region,并设置对应的接入点 */ try { DefaultProfile.addEndpoint(endPointName,regionId,productName,domain); } catch (ClientException e) { e.printStackTrace(); } IClientProfile profile= DefaultProfile.getProfile(regionId,accessKey,secretKey); IAcsClient iAcsClient= new DefaultAcsClient(profile); OnsPublishSearchRequest request = new OnsPublishSearchRequest(); /** *ONSRegionId是指你需要API访问MQ哪个区域的资源. *该值必须要根据OnsRegionList方法获取的列表来选择和配置,因为OnsRegionId是变动的,不能够写固定值 */ request.setOnsRegionId("daily"); request.setPreventCache(System.currentTimeMillis()); request.setAcceptFormat(FormatType.JSON); request.setSearch("PID_Mingduan"); try { OnsPublishSearchResponse response=iAcsClient.getAcsResponse(request); List publishInfoDoList =response.getData(); for (OnsPublishSearchResponse.PublishInfoDo publishInfoDo:publishInfoDoList){ System.out.println(publishInfoDo.getId()+" "+ publishInfoDo.getChannelId()+" "+ publishInfoDo.getChannelName()+" "+ publishInfoDo.getOnsRegionId()+" "+ publishInfoDo.getRegionName()+" "+ 消息队列 MQ Open API 47 订阅管理相关接口 订阅信息精确查询 本文介绍 OnsSubscribeGet 接口,调用该接口可以查询目标 CID 的详细信息。 1.使用场景 MQ 使用过程中如果需要对订阅关系进行管理,获取账号下 CID 的详细信息,可以调用该接口获取信息。 2.请求参数列表 3.返回参数列表 publishInfoDo.getOwner()+" "+ publishInfoDo.getProducerId()+" "+ publishInfoDo.getTopic()+" "+ publishInfoDo.getStatus()+" "+ publishInfoDo.getStatusName()+" "+ publishInfoDo.getCreateTime()+" "+ publishInfoDo.getUpdateTime()); } } catch (ServerException e) { e.printStackTrace(); } catch (ClientException e) { e.printStackTrace(); } } 名称 类型 是否必须 描述 OnsRegionId String 是 当前查询 MQ 所在区 域,可以通过 OnsRegionList 方法 获取 OnsPlatform String 否 该请求来源,默认是从 POP 平台 PreventCache Long 是 用于 CSRF 校验,设置 为系统当前时间即可 ConsumerId String 是 需要查询的订阅关系的 CID Topic String 是 需要查询的 Topic 名称 类型 描述 消息队列 MQ Open API 48 - - - SubscribeInfoDo 数据结构 4.相关 API OnsSubcribeCreate:创建订阅关系 OnsSubcribeDelete:删除订阅关系 OnsSubscribeList:获取订阅关系列表 5.使用示例 调用示例 本示例在 daily 区域下查询名为 CID_Mingduan 的订阅组信息,并打印。 RequestId String 为公共参数,每个请求独一无二 HelpUrl String 帮助链接 Data List(SubscribeInfoDo) 查询到的订阅关系集合 名称 类型 描述 Id Long 订阅信息在数据库中的索引编号 channelId Integer 该 Topic 所在区域 ID,0- ALIYUN,1-CLOUD,2,3,4 channelName String 该 Topic 所在区域名称 ,ALIYUN 代表阿里云 ,CLOUD 代表聚石塔,… onsRegionId Long 该 Topic 所在区域 ID,就是 ONSRegionList 方法获取的内 容 regionName String 该 Topic 所在区域名称 Owner String 该发布信息的拥有者 ConsumerId String 消费集群 ID Topic String Topic 名称 Status Long 当前状态 StatusName String 状态名称,服务中,已下线等 CreateTime Long 创建时间 UpdateTime Long 最后更新时间 public static void main(String []args) { String regionId = "cn-hangzhou"; String accessKey = "XXXXXXXXXXXXXXXXX"; String secretKey = "XXXXXXXXXXXXXXXXX"; 消息队列 MQ Open API 49 订阅信息列表 本文介绍 OnsSubscribeList 接口,调用该接口将获取用户所有的 CID 信息的列表。 String endPointName ="cn-hangzhou"; String productName ="Ons"; String domain ="ons.cn-hangzhou.aliyuncs.com"; /** *根据自己需要访问的区域选择Region,并设置对应的接入点 */ try { DefaultProfile.addEndpoint(endPointName,regionId,productName,domain); } catch (ClientException e) { e.printStackTrace(); } IClientProfile profile= DefaultProfile.getProfile(regionId,accessKey,secretKey); IAcsClient iAcsClient= new DefaultAcsClient(profile); OnsSubscriptionGetRequest request = new OnsSubscriptionGetRequest(); /** *ONSRegionId是指你需要API访问MQ哪个区域的资源 *该值必须要根据OnsRegionList方法获取的列表来选择和配置,因为OnsRegionId是变动的,不能够写固定值 */ request.setOnsRegionId("daily"); request.setPreventCache(System.currentTimeMillis()); request.setAcceptFormat(FormatType.JSON); request.setTopic("MingduanTest"); request.setConsumerId("CID_Mingduan"); try { OnsSubscriptionGetResponse response=iAcsClient.getAcsResponse(request); List subscribeInfoDoList=response.getData(); for(OnsSubscriptionGetResponse.SubscribeInfoDo subscribeInfoDo:subscribeInfoDoList){ System.out.println(subscribeInfoDo.getId()+" "+ subscribeInfoDo.getChannelId()+" "+ subscribeInfoDo.getChannelName()+" "+ subscribeInfoDo.getOnsRegionId()+" "+ subscribeInfoDo.getRegionName()+" "+ subscribeInfoDo.getOwner()+" "+ subscribeInfoDo.getConsumerId()+" "+ subscribeInfoDo.getTopic()+" "+ subscribeInfoDo.getStatus()+" "+ subscribeInfoDo.getStatusName()+" "+ subscribeInfoDo.getCreateTime()+" "+ subscribeInfoDo.getUpdateTime()); } } catch (ServerException e) { e.printStackTrace(); } catch (ClientException e) { e.printStackTrace(); } } 消息队列 MQ Open API 50 1. 使用场景 OnsSubscribeList 接口一般用于用户 CID 资源的列表展示,并不用于具体的信息查询。 2. 请求参数列表 3. 返回参数列表 SubscribeInfoDo 数据结构 名称 类型 是否必须 描述 OnsRegionId String 是 当前查询 MQ 所在区 域,可以通过 OnsRegionList 方法 获取 OnsPlatform String 否 该请求来源,默认是从 POP 平台 PreventCache Long 是 用于 CSRF 校验,设置 为系统当前时间即可 名称 类型 描述 RequestId String 为公共参数,每个请求独一无二 HelpUrl String 帮助链接 Data List(SubscribeInfoDo) 查询到的订阅关系集合 名称 类型 描述 Id Long 订阅信息在数据库中的索引编号 channelId Integer 该 Topic 所在区域 ID,0- ALIYUN,1-CLOUD,2,3,4 channelName String 该 Topic 所在区域名称 ,ALIYUN 代表阿里云 ,CLOUD 代表聚石塔,… onsRegionId Long 该 Topic 所在区域 ID,就是 ONSRegionList 方法获取的内 容 regionName String 该 Topic 所在区域名称 Owner String 该发布信息的拥有者 ConsumerId String 消费集群 ID Topic String Topic 名称 Status Long 当前状态 StatusName String 状态名称,服务中,已下线等 消息队列 MQ Open API 51 - - - 4. 相关 API OnsSubcribeCreate:创建订阅关系 OnsSubcribeDelete:删除订阅关系 OnsSubscribeGet:订阅关系精确查询 5. 使用示例 调用示例 本示例查询 daily 区域下所有的 CID 列表,并打印。 CreateTime Long 创建时间 UpdateTime Long 最后更新时间 public static void main(String []args) { String regionId = "cn-hangzhou"; String accessKey = "XXXXXXXXXXXXXXXXX"; String secretKey = "XXXXXXXXXXXXXXXXX"; String endPointName ="cn-hangzhou"; String productName ="Ons"; String domain ="ons.cn-hangzhou.aliyuncs.com"; /** *根据自己需要访问的区域选择Region,并设置对应的接入点 */ try { DefaultProfile.addEndpoint(endPointName,regionId,productName,domain); } catch (ClientException e) { e.printStackTrace(); } IClientProfile profile= DefaultProfile.getProfile(regionId,accessKey,secretKey); IAcsClient iAcsClient= new DefaultAcsClient(profile); OnsSubscriptionListRequest request = new OnsSubscriptionListRequest(); /** *ONSRegionId是指你需要API访问MQ哪个区域的资源. *该值必须要根据OnsRegionList方法获取的列表来选择和配置,因为OnsRegionId是变动的,不能够写固定值 */ request.setOnsRegionId("daily"); request.setPreventCache(System.currentTimeMillis()); request.setAcceptFormat(FormatType.JSON); try { OnsSubscriptionListResponse response=iAcsClient.getAcsResponse(request); List subscribeInfoDoList=response.getData(); for(OnsSubscriptionListResponse.SubscribeInfoDo subscribeInfoDo:subscribeInfoDoList){ System.out.println(subscribeInfoDo.getId()+" "+ subscribeInfoDo.getChannelId()+" "+ subscribeInfoDo.getChannelName()+" "+ subscribeInfoDo.getOnsRegionId()+" "+ subscribeInfoDo.getRegionName()+" "+ subscribeInfoDo.getOwner()+" "+ 消息队列 MQ Open API 52 订阅信息搜索 本文介绍 OnsSubscribeSearch 接口,调用该接口可以通过 Topic 或者 CID 信息搜索符合条件的 CID 信息。 1. 使用场景 OnsSubscribeSearch 接口一般用于不确定 CID 名称的时候,可以通过 Topic 来搜索 CID 信息。 2. 请求参数列表 3. 返回参数列表 SubscribeInfoDo 数据结构 subscribeInfoDo.getConsumerId()+" "+ subscribeInfoDo.getTopic()+" "+ subscribeInfoDo.getStatus()+" "+ subscribeInfoDo.getStatusName()+" "+ subscribeInfoDo.getCreateTime()+" "+ subscribeInfoDo.getUpdateTime()); } } catch (ServerException e) { e.printStackTrace(); } catch (ClientException e) { e.printStackTrace(); } } 名称 类型 是否必须 描述 OnsRegionId String 是 当前查询 MQ 所在区 域,可以通过 OnsRegionList 方法 获取 OnsPlatform String 否 该请求来源,默认是从 POP 平台 PreventCache Long 是 用于 CSRF 校验,设置 为系统当前时间即可 Search String 是 搜索的关键词,可以是 Topic 或者 CID 名称 类型 描述 RequestId String 为公共参数,每个请求独一无二 HelpUrl String 帮助链接 Data List(SubscribeInfoDo) 查询到的订阅关系集合 名称 类型 描述 消息队列 MQ Open API 53 - - - 4. 相关 API OnsSubcribeCreate:创建订阅关系 OnsSubcribeDelete:删除订阅关系 OnsSubscribeList:获取订阅关系列表 5. 使用示例 调用示例 本示例通过设定搜索条件 CID_Mingduan 来获取符合的 CID 信息,并打印。 Id Long 订阅信息在数据库中的索引编号 channelId Integer 该 Topic 所在区域 ID,0- ALIYUN,1-CLOUD,2,3,4 channelName String 该 Topic 所在区域名称 ,ALIYUN 代表阿里云 ,CLOUD 代表聚石塔,… onsRegionId Long 该 Topic 所在区域 ID,就是 ONSRegionList 方法获取的内 容 regionName String 该 Topic 所在区域名称 Owner String 该发布信息的拥有者 ConsumerId String 消费集群 ID Topic String Topic 名称 Status Long 当前状态 StatusName String 状态名称,服务中,已下线等 CreateTime Long 创建时间 UpdateTime Long 最后更新时间 public static void main(String []args) { String regionId = "cn-hangzhou"; String accessKey = "XXXXXXXXXXXXXXXXX"; String secretKey = "XXXXXXXXXXXXXXXXX"; String endPointName ="cn-hangzhou"; String productName ="Ons"; String domain ="ons.cn-hangzhou.aliyuncs.com"; /** *根据自己需要访问的区域选择Region,并设置对应的接入点 */ try { DefaultProfile.addEndpoint(endPointName,regionId,productName,domain); } catch (ClientException e) { 消息队列 MQ Open API 54 用户管理相关接口 获取 MQ 的 Region 信息列表 本文介绍 OnsRegionList 接口,该接口返回 MQ 目前开放服务的 Region 列表。 1.使用场景 在所有 Open API 的调用过程中都需要指定 MQ 的 Region 信息。该 Region 字段即可通过 OnsRegionList 接口获取。 e.printStackTrace(); } IClientProfile profile= DefaultProfile.getProfile(regionId,accessKey,secretKey); IAcsClient iAcsClient= new DefaultAcsClient(profile); OnsSubscriptionSearchRequest request = new OnsSubscriptionSearchRequest(); /** *ONSRegionId是指你需要API访问MQ哪个区域的资源. *该值必须要根据OnsRegionList方法获取的列表来选择和配置,因为OnsRegionId是变动的,不能够写固定值 */ request.setOnsRegionId("daily"); request.setPreventCache(System.currentTimeMillis()); request.setAcceptFormat(FormatType.JSON); request.setSearch("CID_Mingduan"); try { OnsSubscriptionSearchResponse response=iAcsClient.getAcsResponse(request); List subscribeInfoDoList=response.getData(); for(OnsSubscriptionSearchResponse.SubscribeInfoDo subscribeInfoDo:subscribeInfoDoList){ System.out.println(subscribeInfoDo.getId()+" "+ subscribeInfoDo.getChannelId()+" "+ subscribeInfoDo.getChannelName()+" "+ subscribeInfoDo.getOnsRegionId()+" "+ subscribeInfoDo.getRegionName()+" "+ subscribeInfoDo.getOwner()+" "+ subscribeInfoDo.getConsumerId()+" "+ subscribeInfoDo.getTopic()+" "+ subscribeInfoDo.getStatus()+" "+ subscribeInfoDo.getStatusName()+" "+ subscribeInfoDo.getCreateTime()+" "+ subscribeInfoDo.getUpdateTime()); } } catch (ServerException e) { e.printStackTrace(); } catch (ClientException e) { e.printStackTrace(); } } 消息队列 MQ Open API 55 2.请求参数列表 3.返回参数列表 RegionDo 数据结构 4.使用示例 调用示例 名称 类型 是否必须 描述 OnsRegionId String 否 当前查询 MQ 所在区 域 OnsPlatform String 否 该请求来源,默认是从 POP 平台 PreventCache Long 是 用于 CSRF 校验,设置 为系统当前时间即可 名称 类型 描述 RequestId String 为公共参数,每个请求独一无二 HelpUrl String 帮助链接 Data List(RegionDo) 查询结果 成员 类型 描述 Id Long 数据库中编号 RegionId String regionId 名称 RegionName String Region 别名 ChannelId Long 所在 Channel 编号 ChannelName String 所在 Channel 别名 CreateTime Long 创建时间 UpdateTime Long 最后更新时间 public static void main(String[] args) { String regionId = "cn-hangzhou"; String accessKey = "XXXXXXXXXXXXXXXXX"; String secretKey = "XXXXXXXXXXXXXXXXX"; String endPointName ="cn-hangzhou"; String productName ="Ons"; String domain ="ons.cn-hangzhou.aliyuncs.com"; /** 消息队列 MQ Open API 56 发布订阅统计接口 Topic 写入统计 本文档介绍 OnsTrendTopicInputTps 接口,调用该接口可以查询一段时间内指定 Topic 的消息写入报表数据 。 1. 使用场景 线上环境统计 Topic 的消息数据可以使用该接口获取信息,根据类型可以选择查询指定时间段内 Topic 的写入 量或者 TPS 曲线数据。 如果应用方消息量比较小,间隔不均匀,此时采用 TPS 查询可能会导致数据不明显,建议使用总量查询。 *根据自己需要访问的区域选择Region,并设置对应的接入点 */ try { DefaultProfile.addEndpoint(endPointName,regionId,productName,domain); } catch (ClientException e) { e.printStackTrace(); } IClientProfile profile= DefaultProfile.getProfile(regionId,accessKey,secretKey); IAcsClient iAcsClient= new DefaultAcsClient(profile); OnsRegionListRequest request = new OnsRegionListRequest(); request.setAcceptFormat(FormatType.JSON); request.setPreventCache(System.currentTimeMillis()); try { OnsRegionListResponse response = client.getAcsResponse(request); List regionDoList=response.getData(); for (OnsRegionListResponse.RegionDo regionDo:regionDoList){ System.out.println(regionDo.getId()+" "+ regionDo.getOnsRegionId()+" "+ regionDo.getRegionName()+" "+ regionDo.getChannelId()+" "+ regionDo.getChannelName()+" "+ regionDo.getCreateTime()+" "+ regionDo.getUpdateTime()); } } catch (ClientException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } } 消息队列 MQ Open API 57 2. 请求参数列表 3. 返回参数列表 Data 数据集定义 StatsDataDo 数据集定义 名称 类型 是否必须 描述 OnsRegionId String 是 当前查询 MQ 所在区 域,可以通过 OnsRegionList 方法 获取 OnsPlatform String 否 该请求来源,默认是从 POP 平台 PreventCache Long 是 用于 CSRF 校验,设置 为系统当前时间即可 Topic String 是 需要查询的 Topic 名 称 BeginTime Long 是 查询区间起始毫秒时间 戳 EndTime Long 是 查询区间终止毫秒时间 戳 Period Long 是 采样周期,单位分钟 ,支持(1,5,10) Type Integer 是 查询的类型(0代表总 量,1代表TPS) 名称 类型 描述 RequestId String 为公共参数,每个请求独一无二 HelpUrl String 帮助链接 data Data 数据集合 名称 类型 描述 Title String table 的名称 Records List(StatsDataDo) 采集点信息 名称 类型 描述 X Long 横轴,毫秒时间戳 Y Float 纵轴,数据(TPS 或者总量) 消息队列 MQ Open API 58 - 4. 相关 API OnsTrendGroupOutputTps:查询 CID 的消息消费统计 5. 使用示例 调用示例 消息消费统计 本文档介绍 OnsTrendGroupOutputTps 接口,调用该接口可以查询指定 Consumer ID 在一段时间内获消费 消息的统计信息。 public static void main(String []args) { String regionId = "cn-hangzhou"; String accessKey = "XXXXXXXXXXXXXXXXX"; String secretKey = "XXXXXXXXXXXXXXXXX"; String endPointName ="cn-hangzhou"; String productName ="Ons"; String domain ="ons.cn-hangzhou.aliyuncs.com"; /** *根据自己需要访问的区域选择Region,并设置对应的接入点 */ try { DefaultProfile.addEndpoint(endPointName,regionId,productName,domain); } catch (ClientException e) { e.printStackTrace(); } IClientProfile profile= DefaultProfile.getProfile(regionId,accessKey,secretKey); IAcsClient iAcsClient= new DefaultAcsClient(profile); OnsTrendTopicInputTpsRequest request =new OnsTrendTopicInputTpsRequest(); request.setOnsRegionId("cn-qingdao-publictest"); request.setPreventCache(System.currentTimeMillis()); request.setAcceptFormat(FormatType.JSON); request.setTopic("MingduanTestAPI"); request.setBeginTime(System.currentTimeMillis()-4*3600*1000); request.setEndTime(System.currentTimeMillis()); request.setPeriod(1); request.setType(0); try { OnsTrendTopicInputTpsResponse response =iAcsClient.getAcsResponse(request); OnsTrendTopicInputTpsResponse.Data data =response.getData(); System.out.println(data.getTitle()+"\n"+ data.getRecords()); } catch (ClientException e) { e.printStackTrace(); } } 消息队列 MQ Open API 59 - - 1.使用场景 线上环境生成消费数据报表时,可以根据该接口查询消费消息的数量或者 TPS 统计。 查询场景: 查询消费总量曲线的统计 查询消费 TPS 曲线的统计 如果应用方消息量比较小,间隔不均匀,此时采用 TPS 查询可能会导致数据不明显,建议使用总量查询。 2. 请求参数列表 3. 返回参数列表 Data 数据集定义 名称 类型 是否必须 描述 OnsRegionId String 是 当前查询 MQ 所在区 域,可以通过 OnsRegionList 方法 获取 OnsPlatform String 否 该请求来源,默认是从 POP 平台 PreventCache Long 是 用于 CSRF 校验,设置 为系统当前时间即可 Topic String 是 需要查询的 Topic 名 称 ConsumerId String 是 需要查询的 CID 名称 BeginTime Long 是 查询区间起始毫秒时间 戳 EndTime Long 是 查询区间终止毫秒时间 戳 Period Long 是 采样周期,单位分钟 ,支持(1,5,10) Type Integer 是 查询的类型(0代表总 量,1代表TPS) 名称 类型 描述 RequestId String 为公共参数,每个请求独一无二 HelpUrl String 帮助链接 data Data 数据集合 名称 类型 描述 消息队列 MQ Open API 60 - StatsDataDo 数据集定义 4. 相关 API OnsTrendTopicInputTps:查询消息写入的统计信息 5. 使用示例 调用示例 Title String table 的名称 Records List(StatsDataDo) 采集点信息 名称 类型 描述 X Long 横轴,毫秒时间戳 Y Float 纵轴,数据(TPS 或者总量) public static void main(String []args) { String regionId = "cn-hangzhou"; String accessKey = "XXXXXXXXXXXXXXXXX"; String secretKey = "XXXXXXXXXXXXXXXXX"; String endPointName ="cn-hangzhou"; String productName ="Ons"; String domain ="ons.cn-hangzhou.aliyuncs.com"; /** *根据自己需要访问的区域选择Region,并设置对应的接入点 */ try { DefaultProfile.addEndpoint(endPointName,regionId,productName,domain); } catch (ClientException e) { e.printStackTrace(); } IClientProfile profile= DefaultProfile.getProfile(regionId,accessKey,secretKey); IAcsClient iAcsClient= new DefaultAcsClient(profile); OnsTrendGroupOutputTpsRequest request =new OnsTrendGroupOutputTpsRequest(); request.setOnsRegionId("cn-qingdao-publictest"); request.setPreventCache(System.currentTimeMillis()); request.setAcceptFormat(FormatType.JSON); request.setTopic("MingduanTestAPI"); request.setConsumerId("CID_Mingduan"); request.setBeginTime(System.currentTimeMillis()-4*3600*1000); request.setEndTime(System.currentTimeMillis()); request.setPeriod(1); request.setType(0); try { OnsTrendGroupOutputTpsResponse response =iAcsClient.getAcsResponse(request); OnsTrendGroupOutputTpsResponse.Data data =response.getData(); System.out.println(data.getTitle()+"\n"+ 消息队列 MQ Open API 61 - - - 资源授权接口 创建授权 本文介绍 OnsEmpowerCreate 接口,调用该接口可以将目标 Topic 授权给指定用户使用,包括发布消息和订 阅消息的权限。 1. 使用场景 MQ 的 Topic 资源属于申请的 Owner 账号所有,当需要跨账号访问 Topic 资源时,Owner 账号可以使用授权 接口对目标账号进行发布消息或者接收消息的权限授予。 授权注意事项: 授权可以支持三种权限:发布、订阅、发布&订阅。 发起授权的账号必须是资源的 Owner 账号,目标账号可以是子账号或者主账号。 授权后,目标账号仍然需要创建自己的订阅 CID,而不是使用 Owner 账号的 CID 来收消息。 2. 请求参数列表 data.getRecords()); } catch (ClientException e) { e.printStackTrace(); } 名称 类型 是否必须 描述 OnsRegionId String 是 当前查询 MQ 所在区 域,可以通过 OnsRegionList 方法 获取 OnsPlatform String 否 该请求来源,默认是从 POP 平台 PreventCache Long 是 用于 CSRF 校验,设置 为系统当前时间即可 EmpowerUser Long 是 授权的目标用户 User ID,支持子账号 ID Topic String 是 授权的目标 Topic,该 Topic 必须是当前用户 所有 Relation Integer 是 授权类型,2代表授权 发送,4代表授权订阅 ,6代表授权发送和订 消息队列 MQ Open API 62 - - 3. 返回参数列表 4. 相关 API OnsEmpowerList:查看授权列表 OnsEmpowerDelet:删除授权 5. 使用示例 调用示例 阅 名称 类型 描述 RequestId String 为公共参数,每个请求独一无二 HelpUrl String 帮助链接 public static void main(String []args) { public static void main(String []args) { String regionId = "cn-hangzhou"; String accessKey = "XXXXXXXXXXXXXXXXX"; String secretKey = "XXXXXXXXXXXXXXXXX"; String endPointName ="cn-hangzhou"; String productName ="Ons"; String domain ="ons.cn-hangzhou.aliyuncs.com"; /** *根据自己需要访问的区域选择Region,并设置对应的接入点 */ try { DefaultProfile.addEndpoint(endPointName,regionId,productName,domain); } catch (ClientException e) { e.printStackTrace(); } IClientProfile profile= DefaultProfile.getProfile(regionId,accessKey,secretKey); IAcsClient iAcsClient= new DefaultAcsClient(profile); OnsEmpowerCreateRequest request = new OnsEmpowerCreateRequest(); request.setOnsRegionId("cn-qingdao-publictest"); request.setPreventCache(System.currentTimeMillis()); request.setAcceptFormat(FormatType.JSON); request.setEmpowerUser("167535647680831312"); request.setTopic("topic_for_public_msg_test"); request.setRelation(2); try { OnsEmpowerCreateResponse response=iAcsClient.getAcsResponse(request); System.out.println(response.getRequestId()); } catch (ServerException e) { e.printStackTrace(); } catch (ClientException e) { 消息队列 MQ Open API 63 查询授权 本文介绍 OnsEmpowerList 接口,调用该接口查询目标 Topic 对特定账号的授权信息。 1. 使用场景 Topic 的所有者查询自己 owner 的 Topic 是否对特定账号授权,授权的类型可以通过该接口查询。 2. 请求参数列表 3. 返回参数列表 AuthOwnerInfoDo 结构体内容 e.printStackTrace(); } } 名称 类型 是否必须 描述 OnsRegionId String 是 当前查询 MQ 所在区 域,可以通过 OnsRegionList 方法 获取 OnsPlatform String 否 该请求来源,默认是从 POP 平台 PreventCache Long 是 用于 CSRF 校验,设置 为系统当前时间即可 EmpowerUser Long 是 查询的目标用户 User ID,支持子账号 ID Topic String 否 查询的目标 Topic,该 Topic 必须是当前用户 所有 名称 类型 描述 RequestId String 为公共参数,每个请求独一无二 HelpUrl String 帮助链接 Data List(AuthOwnerInfoDo) 查询到的权限数据列表 名称 类型 描述 Topic String Topic 名称 Owner Long 所有者 UserId Relation Integer 权限类型,参考授权的参数说明 消息队列 MQ Open API 64 - - 4. 相关 API OnsEmpowerCreate:创建授权信息 OnsEmpowerDelete:删除授权信息 5. 使用示例 调用示例 删除授权 本文介绍 OnsEmpowerDelete 接口,调用该接口可以对已经创建的授权关系进行删除,以解除之前创建的跨 账号访问资源的权限。 public static void main(String []args) { public static void main(String []args) { String regionId = "cn-hangzhou"; String accessKey = "XXXXXXXXXXXXXXXXX"; String secretKey = "XXXXXXXXXXXXXXXXX"; String endPointName ="cn-hangzhou"; String productName ="Ons"; String domain ="ons.cn-hangzhou.aliyuncs.com"; /** *根据自己需要访问的区域选择Region,并设置对应的接入点 */ try { DefaultProfile.addEndpoint(endPointName,regionId,productName,domain); } catch (ClientException e) { e.printStackTrace(); } IClientProfile profile= DefaultProfile.getProfile(regionId,accessKey,secretKey); IAcsClient iAcsClient= new DefaultAcsClient(profile); OnsEmpowerListRequest request = new OnsEmpowerListRequest(); request.setOnsRegionId("cn-qingdao-publictest"); request.setPreventCache(System.currentTimeMillis()); request.setAcceptFormat(FormatType.JSON); request.setEmpowerUser("1675352326808602"); request.setTopic("topic_for_public_msg_test"); try { OnsEmpowerListResponse response=iAcsClient.getAcsResponse(request); System.out.println(response.getRequestId()); } catch (ServerException e) { e.printStackTrace(); } catch (ClientException e) { e.printStackTrace(); } } 消息队列 MQ Open API 65 - - - - 1. 使用场景 在创建授权后,如果需要解除跨账号的 Topic 访问权限,Owner 账号可以调用该接口解除。 注意事项: 调用方必须是资源的 Owner 账号。 需要删除的授权信息必须存在。 2. 请求参数列表 3. 返回参数列表 4. 相关 API OnsEmpowerCreate:创建授权接口 OnsEmpowerList:查看授权信息接口 5. 使用示例 调用示例 名称 类型 是否必须 描述 OnsRegionId String 是 当前查询 MQ 所在区 域,可以通过 OnsRegionList 方法 获取 OnsPlatform String 否 该请求来源,默认是从 POP 平台 PreventCache Long 是 用于 CSRF 校验,设置 为系统当前时间即可 EmpowerUser Long 是 授权的目标用户 User ID,支持子账号 ID Topic String 是 授权的目标 Topic,该 Topic 必须是当前用户 所有 名称 类型 描述 RequestId String 为公共参数,每个请求独一无二 HelpUrl String 帮助链接 public static void main(String []args) { public static void main(String []args) { String regionId = "cn-hangzhou"; 消息队列 MQ Open API 66 String accessKey = "XXXXXXXXXXXXXXXXX"; String secretKey = "XXXXXXXXXXXXXXXXX"; String endPointName ="cn-hangzhou"; String productName ="Ons"; String domain ="ons.cn-hangzhou.aliyuncs.com"; /** *根据自己需要访问的区域选择Region,并设置对应的接入点 */ try { DefaultProfile.addEndpoint(endPointName,regionId,productName,domain); } catch (ClientException e) { e.printStackTrace(); } IClientProfile profile= DefaultProfile.getProfile(regionId,accessKey,secretKey); IAcsClient iAcsClient= new DefaultAcsClient(profile); OnsEmpowerDeleteRequest request = new OnsEmpowerDeleteRequest(); request.setOnsRegionId("cn-qingdao-publictest"); request.setPreventCache(System.currentTimeMillis()); request.setAcceptFormat(FormatType.JSON); request.setEmpowerUser("16753563236808602"); request.setTopic("topic_for_public_msg_test"); try { OnsEmpowerDeleteResponse response=iAcsClient.getAcsResponse(request); System.out.println(response.getRequestId()); } catch (ServerException e) { e.printStackTrace(); } catch (ClientException e) { e.printStackTrace(); } } 消息队列 MQ Open API 67
还剩67页未读

继续阅读

下载pdf到电脑,查找使用更方便

pdf的实际排版效果,会与网站的显示效果略有不同!!

需要 10 金币 [ 分享pdf获得金币 ] 0 人已下载

下载pdf

pdf贡献者

Anna_1573

贡献于2017-05-08

下载需要 10 金币 [金币充值 ]
亲,您也可以通过 分享原创pdf 来获得金币奖励!
下载pdf