Consulta os detalhes de um grupo de consumidores, incluindo as transações por segundo (TPS) de consumo de mensagens, o status de balanceamento de carga, as informações de conexão dos clientes consumidores e se todos os consumidores do grupo estão inscritos nos mesmos tópicos e tags.
Observação
Use esta operação em cenários com consumidores online e mensagens na fila. Utilize as informações retornadas para solucionar erros, verificar se todos os consumidores do grupo estão inscritos nos mesmos tópicos e tags e confirmar se o balanceamento de carga ocorre conforme o esperado. Também é possível obter rastreamentos de pilha de threads dos consumidores online.
Esta operação utiliza múltiplas chamadas de backend para consultar e agregar dados, o que aumenta o tempo de processamento da solicitação. Evite chamadas frequentes a esta API.
Limite de solicitações
Cada conta Alibaba Cloud pode chamar esta operação até 10 vezes por segundo. Se o número de solicitações enviadas dentro de um segundo atingir esse limite, as novas requisições falharão, o que pode interromper seus negócios. Para mais informações sobre os limites de cada operação, consulte Limites de solicitação de API.
Autorização
Contas Alibaba Cloud possuem permissão nativa para chamar esta operação. Usuários do Resource Access Management (RAM) precisam de autorização específica. A tabela abaixo descreve as permissões necessárias para usuários RAM. Para saber como conceder permissões, consulte Políticas.
|
API |
Action |
Recurso em uma instância com namespace |
Recurso em uma instância sem namespace |
|
OnsConsumerStatus |
mq:QueryInstanceBaseInfo mq:QueryConsumerStatus |
acs:mq:::{instanceId}%{groupId} |
acs:mq:::{groupId} |
Parâmetros da solicitação
| Parâmetro | Tipo | Obrigatório | Exemplo | Descrição |
| Action | String | Sim | OnsConsumerStatus | A operação a ser executada. Defina o valor como OnsConsumerStatus. |
| GroupId | String | Sim | GID_test_group_id | O ID do grupo de consumidores a ser consultado. |
| Detail | Boolean | Não | true | Define se os detalhes do grupo de consumidores devem ser consultados. Valores válidos:
|
| NeedJstack | Boolean | Não | true | Define se as informações de rastreamento de pilha de threads devem ser consultadas. Valores válidos:
|
| InstanceId | String | Sim | MQ_INST_111111111111_DOxxxxxx | O ID da instância à qual o grupo de consumidores pertence. |
Parâmetros de resposta
| Parâmetro | Tipo | Exemplo | Descrição |
| RequestId | String | 10EDC518-10E7-4B34-92FB-171235FA**** | O ID da solicitação. O sistema gera um ID exclusivo para cada requisição, permitindo a solução de problemas com base neste identificador. |
| Data | Object | Os dados retornados. | |
| ConsumeTps | Float | 0 | O TPS de consumo de mensagens. |
| ConsumeModel | String | CLUSTERING | O modo de consumo. Valores válidos:
Para mais informações sobre os modos de consumo, consulte Consumo por clustering e consumo por broadcasting. |
| ConnectionSet | Array of ConnectionDo | Informações sobre os consumidores online no grupo de consumidores. | |
| ConnectionDo | |||
| RemoteIP | String | 42.120.74.** | O endereço IP privado ou público do host. |
| Version | String | V4_3_6_SNAPSHOT | A versão do cliente consumidor. |
| ClientAddr | String | 30.5.121.** | O endereço IP e o número da porta do consumidor. |
| Language | String | JAVA | A linguagem de programação usada no desenvolvimento do consumidor. |
| ClientId | String | 30.5.121.**@25560#-1999745829#-1737591554#458773089270275 | O ID do consumidor. |
| TotalDiff | Long | 197 | O número total de mensagens na fila. |
| ConsumerConnectionInfoList | Array of ConsumerConnectionInfoDo | Detalhes dos consumidores online no grupo, incluindo informações sobre rastreamentos de pilha de threads e tempo de resposta (RT) de consumo. Para obter essas informações, defina o parâmetro Detail na solicitação como true. Caso contrário, o valor deste parâmetro será vazio. | |
| ConsumerConnectionInfoDo | |||
| ConsumeModel | String | CLUSTERING | O modo de consumo. Valores válidos:
Para mais informações sobre os modos de consumo, consulte Consumo por clustering e consumo por broadcasting. |
| RunningDataList | Array of ConsumerRunningDataDo | As estatísticas em tempo real. | |
| ConsumerRunningDataDo | |||
| GroupId | String | 0 | O ID do grupo de consumidores. |
| Rt | Float | 0 | O RT de consumo. Unidade: milissegundos. |
| Topic | String | test-mq_topic | O nome do tópico no qual o consumidor está inscrito. |
| FailedCountPerHour | Long | 0 | O número de mensagens com falha de consumo por hora. |
| OkTps | Float | 0 | O TPS de consumo bem-sucedido de mensagens. |
| FailedTps | Float | 0 | O TPS de falhas no consumo de mensagens. |
| SubscriptionSet | Array of SubscriptionData | As informações sobre inscrições. | |
| SubscriptionData | |||
| SubString | String | * | A expressão usada para especificar as tags das mensagens no tópico em que o consumidor está inscrito. |
| SubVersion | Long | 1570701364301 | A versão do relacionamento de inscrição. O valor é do tipo LONG e incrementado automaticamente. |
| Topic | String | test-mq_topic | O nome do tópico no qual o consumidor está inscrito. |
| TagsSet | Array of String | ff | As informações sobre as tags do tópico no qual o consumidor está inscrito. |
| Jstack | Array of ThreadTrackDo | As informações sobre rastreamentos de pilha de threads. Para obter esses dados, defina o parâmetro NeedJstack na solicitação como true. Caso contrário, o valor deste parâmetro será vazio. | |
| ThreadTrackDo | |||
| TrackList | Array of String | TID: 52 STATE: WAITING | Os detalhes dos rastreamentos de pilha de threads. |
| Thread | String | ConsumeMessageThread_0 | O nome da thread. |
| LastTimeStamp | Long | 1570701368114 | O momento mais recente em que uma mensagem foi consumida. |
| StartTimeStamp | Long | 1570701361528 | O momento mais antigo em que uma mensagem foi consumida. |
| Language | String | JAVA | A linguagem de programação usada no desenvolvimento do consumidor. |
| ClientId | String | 30.5.**.**@25560#-1999745829#-1737591554#458773089270275 | O ID do consumidor. |
| Connection | String | ** | As informações de conexão do consumidor. |
| Version | String | V4_3_6 | A versão do cliente consumidor. |
| ConsumeType | String | PUSH | O modo como o consumidor processa mensagens. Valores válidos:
|
| ThreadCount | Integer | 20 | O número de threads do consumidor. |
| InstanceId | String | MQ_INST_111111111111_DOxxxxxx | O ID da instância. |
| DetailInTopicList | Array of DetailInTopicDo | Informações sobre o consumo de mensagens por tópico. Para obter esses dados, defina o parâmetro Detail na solicitação como true. Caso contrário, o valor deste parâmetro será vazio. | |
| DetailInTopicDo | |||
| DelayTime | Long | 0 | A latência de consumo. |
| TotalDiff | Long | 0 | O número de mensagens na fila do tópico. |
| LastTimestamp | Long | 1570701259403 | O momento mais recente em que uma mensagem foi consumida. |
| Topic | String | test-mq_topic | O nome do tópico. |
| SubscriptionSame | Boolean | true | Indica se todos os consumidores do grupo estão inscritos nos mesmos tópicos e tags. |
| DelayTime | Long | 100857 | A latência de consumo. |
| LastTimestamp | Long | 1566883844954 | O momento mais recente em que uma mensagem foi consumida. |
| Online | Boolean | true | Indica se o grupo de consumidores está online. |
| RebalanceOK | Boolean | true | Indica se o balanceamento de carga ocorreu conforme o esperado. Valores válidos:
|
Exemplos
Exemplos de solicitações
http(s)://ons.cn-hangzhou.aliyuncs.com/?Action=OnsConsumerStatus
&GroupId=GID_test_group_id
&InstanceId=MQ_INST_111111111111_DOxxxxxx
&NeedJstack=true
&Detail=true
&<Common request parameters>
Exemplos de respostas de sucesso
Formato 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>
Formato 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****"
}
Códigos de erro
Para obter uma lista de códigos de erro, visite a Central de Erros de API.
Consultar detalhes de um grupo de consumidores no console
No console do Message Queue for Apache RocketMQ, visualize os detalhes de um grupo de consumidores. Para mais informações, veja Visualizar o status dos consumidores.