开发者社区> 问答> 正文

如何查询消费进度

OnsConsumerTimeSpan 接口用于查询当前订阅组订阅的 Topic 的最新消息时间戳以及消费的最新时间戳。

使用场景

使用本接口可以解决查询某个 Topic 当前服务器上存在的消息的最新时间以及最早时间,以及查询消费端最近消费的时间的需求。一般用于展示消费进度的概况,和 ConsumeAccumulate 接口配合使用。

请求参数列表

名称    类型    是否必须    描述
OnsRegionId    String    是    设置所要查询的区域,具体值通过OnsRegionList接口获取
OnsPlatform    String    否    该请求来源,默认是从 POP 平台
PreventCache    Long    是    用于 CSRF 校验,设置为系统当前时间即可
ConsumerId    String    是    需要查询的消费端 CID
Topic    String    是    需要查询的消费的 Topic
返回参数列表

名称    类型    描述
RequestId    String    为公共参数,每个请求独一无二
HelpUrl    String    帮助链接
Data    Data    查询结果
Data 数据结构

成员    类型    描述
Topic    String    查询的 Topic 名称
MinTimeStamp    Long    整个 Topic 目前存储的最新的消息的时间
MaxTimeStamp    Long    整个 Topic 目前存储的最老的消息的时间
ConsumeTimeStamp    Long    当前 group 消费该 Topic 的最新的时间
相关 API

OnsConsumerAccumulate:查询消费堆积
OnsConsumerStatus:查询消费端详情
OnsConsumerResetOffset:重置位点和清除消息
使用示例

   public static void main(String []args) {
          String regionId = "cn-hangzhou";
                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);
                  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();
                  }
      }

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

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载