调用OnsConsumerStatus接口查询指定Group ID的详细状态数据,包含订阅关系检查、消费TPS统计、负载均衡状态、消费端连接等。

使用说明

  • 本接口一般用于在粗略判断消费堆积以及客户端在线状态后,需要排查消费异常原因的场景。可以根据返回结果判断出指定Group ID的订阅关系是否一致、负载均衡是否正常以及获取在线客户端的Jstack信息等。
  • 使用本接口需要调用大量后端接口以完成数据聚合,因此查询速度慢,不建议频繁调用。

QPS限制

本接口的单用户QPS限制为10次/秒。超过限制,API调用会被限流,这可能会影响您的业务,请合理调用。更多信息,请参见QPS限制

授权信息

默认仅限阿里云账号使用本接口,RAM用户只有在被授予了相关API操作权限后方可使用。本接口的授权信息如下表所示。更多信息,请参见权限策略和示例

API

Action

Resource(有命名空间)

Resource(无命名空间)

OnsConsumerStatus

mq:QueryInstanceBaseInfo

mq:QueryConsumerStatus

acs:mq:*:*:{instanceId}%{groupId}

acs:mq:*:*:{groupId}

请求参数

名称 类型 是否必选 示例值 描述
Action String OnsConsumerStatus

系统规定参数。取值:OnsConsumerStatus

GroupId String GID_test_group_id

需要查询的消费端Group ID。

Detail Boolean true

是否查询详细信息。取值说明如下:

  • true:要查询详细信息,即可获取返回参数ConsumerConnectionInfoListDetailInTopicList信息。
  • false:默认值,不查询详细信息,即返回参数ConsumerConnectionInfoListDetailInTopicList为空。
NeedJstack Boolean true

是否打印Jstack信息。取值说明如下:

  • true:要打印Jstack信息,可在Jstack返回参数中获取堆栈信息。
    说明 如需打印Jstack信息,请确保您的入参Detail设置为true
  • false:默认值,不打印Jstack信息,Jstack返回参数为空。
InstanceId String MQ_INST_111111111111_DOxxxxxx

需查询的Group ID所对应的实例ID。

返回数据

名称 类型 示例值 描述
RequestId String 10EDC518-10E7-4B34-92FB-171235FA****

公共参数,每个请求的ID都是唯一的,可用于排查和定位问题。

Data Object

查询结果。

ConsumeTps Float 0

总消费TPS。

ConsumeModel String CLUSTERING

消费模型。取值说明如下:

  • CLUSTERING:集群消费模式
  • BROADCASTING:广播消费模式

两种订阅模式的详细信息,请参见集群消费和广播消费

ConnectionSet Array of ConnectionDo

该集群当前在线客户端信息。

ConnectionDo
RemoteIP String 42.120.74.**

宿主机IP地址或公网IP地址。

Version String V4_3_6_SNAPSHOT

消费端版本。

ClientAddr String 30.5.121.**

该消费实例的地址和端口。

Language String JAVA

消费端语言。

ClientId String 30.5.121.**@25560#-1999745829#-1737591554#458773089270275

消费实例的ID。

TotalDiff Long 197

集群总的消费堆积。

ConsumerConnectionInfoList Array of ConsumerConnectionInfoDo

该集群在线客户端详细信息,包含Jstack、消费RT时间等信息。如需获取详细信息,请确保将Detail请求参数设置为true。否则返回值为空。

ConsumerConnectionInfoDo
ConsumeModel String CLUSTERING

消费模型。取值说明如下:

  • CLUSTERING:集群消费模式
  • BROADCASTING:广播消费模式

两种订阅模式的详细信息,请参见集群消费和广播消费

RunningDataList Array of ConsumerRunningDataDo

实时状态统计。

ConsumerRunningDataDo
GroupId String 0

订阅方的Group ID。

Rt Float 0

消费RT时间,单位ms。

Topic String test-mq_topic

订阅的Topic名称。

FailedCountPerHour Long 0

每小时内消费失败的消息数统计。

OkTps Float 0

消费消息成功的TPS统计。

FailedTps Float 0

消费消息失败的TPS统计。

SubscriptionSet Array of SubscriptionData

订阅关系集合。

SubscriptionData
SubString String *

订阅该Topic的子类别Tag表达式。

SubVersion Long 1570701364301

订阅关系版本号,为自增Long型。

Topic String test-mq_topic

订阅的Topic名称。

TagsSet Array of String ff

订阅的Tag集合。

Jstack Array of ThreadTrackDo

Jstack堆栈信息。如需获取Jstack信息,请确保将NeedJstack入参设置为true。否则返回值为空。

ThreadTrackDo
TrackList Array of String TID: 52 STATE: WAITING

Jstack堆栈信息字符串。

Thread String ConsumeMessageThread_0

线程名称。

LastTimeStamp Long 1570701368114

最后消费时间。

StartTimeStamp Long 1570701361528

消费开始时间。

Language String JAVA

客户端语言。

ClientId String 30.5.**.**@25560#-1999745829#-1737591554#458773089270275

消费实例的ID。

Connection String **

连接信息。

Version String V4_3_6

客户端版本号。

ConsumeType String PUSH

消费者消费消息的模式。取值说明如下:

  • PUSH:消息队列RocketMQ版服务端主动向消费者推送消息。
  • PULL:消费者主动向消息队列RocketMQ版服务端拉取消息。
ThreadCount Integer 20

消费线程数。

InstanceId String MQ_INST_111111111111_DOxxxxxx

实例ID。

DetailInTopicList Array of DetailInTopicDo

各个Topic的消费情况。如需获取详细信息,请确保将Detail请求参数设置为true。否则返回值为空。

DetailInTopicDo
DelayTime Long 0

延迟时间。

TotalDiff Long 0

该Topic消费总堆积数。

LastTimestamp Long 1570701259403

最后消费时间。

Topic String test-mq_topic

Topic名称。

SubscriptionSame Boolean true

订阅关系是否一致。

DelayTime Long 100857

延迟时间。

LastTimestamp Long 1566883844954

最后消费时间。

Online Boolean true

是否在线。

RebalanceOK Boolean true

客户端Rebalance是否正常。取值说明如下:

  • true:正常
  • false:不正常

示例

请求示例

http(s)://ons.cn-hangzhou.aliyuncs.com/?Action=OnsConsumerStatus
&GroupId=GID_test_group_id
&InstanceId=MQ_INST_111111111111_DOxxxxxx
&NeedJstack=true
&Detail=true
&<公共请求参数>

正常返回示例

XML格式

HTTP/1.1 200 OK
Content-Type:application/xml

<OnsConsumerStatusResponse>
<data>
    <connectionSet>
        <bizVersion>V4_3_6</bizVersion>
        <clientAddr>30.5.***.*</clientAddr>
        <clientId>30.5.***.*@97730#-1999745829#-1737591554#729272961762836</clientId>
        <language>JAVA</language>
        <version>V4_3_6</version>
    </connectionSet>
    <consumeModel>CLUSTERING</consumeModel>
    <consumeTps>0</consumeTps>
    <consumerConnectionInfoList>
        <bizVersion>V4_3_6</bizVersion>
        <clientId>30.5.***.*@97730#-1999745829#-1737591554#729272961762836</clientId>
        <consumeType>PUSH</consumeType>
        <jstack>
            <thread>ConsumeMessageThread_4</thread>
            <trackList>TID: 44 STATE: WAITING</trackList>
            <trackList>sun.misc.Unsafe.park(Native Method)</trackList>
            <trackList>java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)</trackList>
            <trackList>java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)</trackList>
            <trackList>java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)</trackList>
            <trackList>java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1074)</trackList>
            <trackList>java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134)</trackList>
            <trackList>java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)</trackList>
            <trackList>java.lang.Thread.run(Thread.java:748)</trackList>
        </jstack>
        <language>JAVA</language>
        <lastTimeStamp>1570701368114</lastTimeStamp>
        <runningDataList>
            <failedCountPerHour>0</failedCountPerHour>
            <failedTps>0</failedTps>
            <okTps>0</okTps>
            <rt>0</rt>
            <topic>test-mq_topic</topic>
        </runningDataList>
        <startTimeStamp>1570701361528</startTimeStamp>
        <subscriptionSet>
            <subString>*</subString>
            <subVersion>1570701364301</subVersion>
            <topic>test-mq_topic</topic>
        </subscriptionSet>
        <threadCount>20</threadCount>
        <version>V4_3_6</version>
    </consumerConnectionInfoList>
    <delayTime>0</delayTime>
    <detailInTopicList>
        <delayTime>0</delayTime>
        <lastTimestamp>1570701259403</lastTimestamp>
        <topic>test-mq_topic</topic>
        <totalDiff>0</totalDiff>
    </detailInTopicList>
    <instanceId>MQ_INST_111111111111_DOxxxxxx</instanceId>
    <lastTimestamp>1570701368114</lastTimestamp>
    <online>true</online>
    <rebalanceOK>true</rebalanceOK>
    <subscriptionSame>true</subscriptionSame>
    <totalDiff>0</totalDiff>
</data>
<requestId>10EDC518-10E7-4B34-92FB-171235FA****</requestId>
</OnsConsumerStatusResponse>

JSON格式

HTTP/1.1 200 OK
Content-Type:application/json

{
  "data" : {
    "connectionSet" : [ {
      "bizVersion" : "V4_3_6",
      "clientAddr" : "30.5.***.*",
      "clientId" : "30.5.***.*@97730#-1999745829#-1737591554#729272961762836",
      "language" : "JAVA",
      "version" : "V4_3_6"
    } ],
    "consumeModel" : "CLUSTERING",
    "consumeTps" : 0,
    "consumerConnectionInfoList" : [ {
      "bizVersion" : "V4_3_6",
      "clientId" : "30.5.***.*@97730#-1999745829#-1737591554#729272961762836",
      "consumeType" : "PUSH",
      "jstack" : [ {
        "thread" : "ConsumeMessageThread_1",
        "trackList" : [ "TID: 44 STATE: WAITING", "sun.misc.Unsafe.park(Native Method)", "java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)", "java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)", "java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)", "java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1074)", "java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134)", "java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)", "java.lang.Thread.run(Thread.java:748)" ]
      } ],
      "language" : "JAVA",
      "lastTimeStamp" : 1570701368114,
      "runningDataList" : [ {
        "failedCountPerHour" : 0,
        "failedTps" : 0,
        "okTps" : 0,
        "rt" : 0,
        "topic" : "test-mq_topic"
      } ],
      "startTimeStamp" : 1570701361528,
      "subscriptionSet" : [ {
        "subString" : "*",
        "subVersion" : 1570701364301,
        "tagsSet" : [ ],
        "topic" : "test-mq_topic"
      } ],
      "threadCount" : 20,
      "version" : "V4_3_6"
    } ],
    "delayTime" : 0,
    "detailInTopicList" : [ {
      "delayTime" : 0,
      "lastTimestamp" : 1570701259403,
      "topic" : "test-mq_topic",
      "totalDiff" : 0
    } ],
    "instanceId" : "MQ_INST_111111111111_DOxxxxxx",
    "lastTimestamp" : 1570701368114,
    "online" : true,
    "rebalanceOK" : true,
    "subscriptionSame" : true,
    "totalDiff" : 0
  },
  "requestId" : "10EDC518-10E7-4B34-92FB-171235FA****"
}

错误码

访问错误中心查看更多错误码。

控制台操作

除了调用OnsConsumerStatus接口,您还可以通过消息队列RocketMQ版控制台查看Group ID的详细数据。具体操作,请参见查看消费者状态