OnsMqttQueryMsgByPubInfo 接口根据发送端信息查询消息。
使用场景
根据发送方信息查询消息的接口一般用于线上排查问题,或者查询某条消息的推送到达率等场景使用。需要输入发送方的详细信息来定位特定的消息。条件越精确,匹配出的消息越精确。获取到消息的 TraceId 之后即可根据 TraceId 调用 OnsMqttQueryTraceByTraceId 接口查询该条消息的实际推送量。
请求参数列表
名称 类型 是否必须 描述
OnsRegionId String 是 当前操作的 MQ 所在区域,详情参见公共术语。
OnsPlatform String 否 请求来源,默认是从 POP 平台。
PreventCache Long 是 用于 CSRF 校验,设置为系统当前时间即可。
Topic String 是 需要查询的消息的完整 Topic。
ClientId String 是 该消息的发送方 ClientId。
BeginTime Long 是 消息发送时间的起始范围。
EndTime Long 是 消息发送时间的终止范围,时间范围越小查询越精确,默认只允许查询30分钟区间。
返回参数列表
名称 类型 描述
RequestId String 为公共参数,每个请求独一无二,用于排查定位问题。
HelpUrl String 帮助链接
MqttMessageDos List(MqttMessageDo) 匹配到的所有消息
MqttMessageDo 数据结构
名称 类型 描述
PubTime Long 消息的精确发送时间
TraceId String 消息唯一的 TraceId,根据该 ID 可以查询到推送量。
错误码列表
无
相关 API
OnsMqttQueryTraceByTraceId:根据 TraceId 查询指定消息的推送量。
使用示例
本示例仅仅提供一个参考,从杭州接入点接入,查询指定信息查询符合条件的所有消息。
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);
OnsMqttQueryMsgByPubInfoRequest request = new OnsMqttQueryMsgByPubInfoRequest();
/**
*ONSRegionId 是指你需要 API 访问 MQ 哪个区域的资源。
*该值必须要根据 OnsRegionList 方法获取的列表来选择和配置,因为 OnsRegionId 是变动的,不能够写固定值。
*/
request.setOnsRegionId("XXXX");
request.setPreventCache(System.currentTimeMillis());
request.setAcceptFormat(FormatType.JSON);
request.setBeginTime(System.currentTimeMillis()-1000*60);
request.setEndTime(System.currentTimeMillis());
request.setClientId("GID_XXX@@@XXXX");//发送方的 clientId
request.setTopic("XXX/XX/XXX");
try {
OnsMqttQueryMsgByPubInfoResponse response = iAcsClient.getAcsResponse(request);
List<OnsMqttQueryMsgByPubInfoResponse.MqttMessageDo> msgList = response.getMqttMessageDos();
for(OnsMqttQueryMsgByPubInfoResponse.MqttMessageDo msg:msgList){
System.out.println(msg.getpubTime() + " " +msg.getTraceId());
}
} catch (ServerException e) {
e.printStackTrace();
} catch (ClientException e) {
e.printStackTrace();
}
}
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。