开发者社区> 问答> 正文

怎么根据 Message ID 查询轨迹

本接口限企业铂金版客户专用,请前往铂金版购买页面查看详情。


OnsTraceQueryByMsgId 接口通过传入 Topic 和 Message ID 创建轨迹查询任务,得到该查询任务的任务 ID。

使用场景

业务方记录了某消息的 Message ID,并需要根据此 Message ID 查询该消息的投递轨迹信息,即可使用 OnsTraceQueryByMsgId 接口创建查询任务。该接口返回任务 ID 后,根据OnsTraceGetResult 接口传入任务 ID 即可获取查询结果。

请求参数列表

名称    类型    是否必须    描述
OnsRegionId    String    是    当前查询 MQ 所在区域,可以通过 OnsRegionList 方法获取
OnsPlatform    String    否    该请求的来源,默认是从 POP 平台
PreventCache    Long    是    用于 CSRF 校验,设置为系统当前时间即可
Topic    String    是    需要查询的消息的 Topic
MsgId    String    是    需要查询的消息的 Message ID
BeginTime    Long    是    查询的时间范围的起始时间点
EndTime    Long    是    查询的时间范围的结束时间点
返回参数列表

名称    类型    描述
RequestId    String    为公共参数,每个请求独一无二
HelpUrl    String    帮助链接
QueryId    String    该查询任务的任务 ID,根据该 ID 再调用 OnsTraceGetResult 接口获取详细结果
相关 API

OnsTraceQueryByMsgKey:根据 Message Key 模糊查询消息轨迹。
OnsTraceGetResult:根据查询任务 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);
           OnsTraceQueryByMsgIdRequest request = new OnsTraceQueryByMsgIdRequest();
            /**
            *ONSRegionId是指你需要API访问MQ哪个区域的资源.
            *该值必须要根据OnsRegionList方法获取的列表来选择和配置,因为OnsRegionId是变动的,不能够写固定值
            */
           request.setOnsRegionId("daily");
           request.setPreventCache(System.currentTimeMillis());
           request.setAcceptFormat(FormatType.JSON);
           request.setTopic("XXXXX");
           request.setMsgId("XXXXX");
           request.setBeginTime(System.currentTimeMillis()-1000*3600*24);
           request.setEndTime(System.currentTimeMillis());
           try {
               OnsTraceQueryByMsgIdResponse response = iAcsClient.getAcsResponse(request);
               System.out.print(response.getQueryId());
           } catch (ServerException e) {
               e.printStackTrace();
           } catch (ClientException e) {
               e.printStackTrace();
           }

展开
收起
猫饭先生 2017-10-27 14:14:16 2336 0
0 条回答
写回答
取消 提交回答
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
对 2000 多亿条数据做一次 group by 需要多久? 立即下载
对2000多亿条数据做一次Group By 需要多久 立即下载
低代码开发师(初级)实战教程 立即下载