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

使用 OnsConsumerStatus 接口时,请注意以下几点:

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

调试

您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动生成SDK代码示例。

请求参数

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

系统规定参数。取值:OnsConsumerStatus。

GroupId String GID_test_group_id

需要查询的消费端 Group ID。

InstanceId String MQ_INST_111111111111_DOxxxxxx

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

Detail Boolean true

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

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

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

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

返回数据

名称 类型 示例值 描述
Data Struct

查询结果。

ConnectionSet Array

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

ConnectionDo
ClientAddr String 30.5.121.**

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

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

消费实例的 ID。

Language String JAVA

消费端语言。

RemoteIP String 42.120.74.**

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

Version String V4_3_6_SNAPSHOT

消费端版本。

ConsumeModel String CLUSTERING

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

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

两种订阅模式的详情请参见集群消费和广播消费

ConsumeTps Float 0

总消费 TPS。

ConsumerConnectionInfoList Array

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

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

消费实例的 ID。

Connection String **

连接信息。

ConsumeModel String CLUSTERING

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

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

两种订阅模式的详情请参见集群消费和广播消费

ConsumeType String PUSH

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

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

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

ThreadTrackDo
Thread String ConsumeMessageThread_0

线程名称。

TrackList List TID: 52 STATE: WAITING

Jstack 堆栈信息字符串。

Language String JAVA

客户端语言。

LastTimeStamp Long 1570701368114

最后消费时间。

RunningDataList Array

实时状态统计。

ConsumerRunningDataDo
FailedCountPerHour Long 0

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

FailedTps Float 0

消费消息失败的 TPS 统计。

GroupId String 0

订阅方的 Group ID。

OkTps Float 0

消费消息成功的 TPS 统计。

Rt Float 0

消费 RT 时间,单位 ms。

Topic String test-mq_topic

订阅的 Topic 名称。

StartTimeStamp Long 1570701361528

消费开始时间。

SubscriptionSet Array

订阅关系集合。

SubscriptionData
SubString String *

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

SubVersion Long 1570701364301

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

TagsSet List ff

订阅的 Tag 集合。

Topic String test-mq_topic

订阅的 Topic 名称。

ThreadCount Integer 20

消费线程数。

Version String V4_3_6

客户端版本号。

DelayTime Long 100857

延迟时间。

DetailInTopicList Array

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

DetailInTopicDo
DelayTime Long 0

延迟时间。

LastTimestamp Long 1570701259403

最后消费时间。

Topic String test-mq_topic

Topic 名称。

TotalDiff Long 0

该 Topic 消费总堆积数。

InstanceId String MQ_INST_111111111111_DOxxxxxx

实例 ID。

LastTimestamp Long 1566883844954

最后消费时间。

Online Boolean true

是否在线。

RebalanceOK Boolean true

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

  • true:正常
  • false:不正常
SubscriptionSame Boolean true

订阅关系是否一致。

TotalDiff Long 197

集群总的消费堆积。

RequestId String 10EDC518-10E7-4B34-92FB-171235FA6E38

为公共参数,每个请求的 ID 都是唯一的。

示例

请求示例

http(s)://[Endpoint]/?Action=OnsConsumerStatus
&GroupId=GID_test_group_id
&InstanceId=MQ_INST_111111111111_DOxxxxxx
&NeedJstack=true
&Detail=true
&<公共请求参数>

正常返回示例

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-171235FA6E38</requestId>
</OnsConsumerStatusResponse>

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-171235FA6E38"
}

错误码

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