apache / apache/rocketmq-dashboard

[Studio][Feature] Show broker consume TPS in the consumer group list

Open
#4,246 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
Java
Stars
1.4k
Forks
683
Avg merge
2d 14h
Merged PRs (30d)
58

Description

## 1. Requested feature and source

Show the broker-side **consume TPS** of each consumer group in the group inventory (list column, group payload, and CSV export).

Source: the parent classic dashboard ships this as a first-class column — `frontend-new/src/pages/Consumer/consumer.jsx` renders a sortable `consumeTps` column ("TPS", lines 375-377) and the backend fills it from the same stats query Studio already runs (`src/main/java/org/apache/rocketmq/dashboard/service/impl/ConsumerServiceImpl.java:258`, `groupConsumeInfo.setConsumeTps((int) consumeStats.getConsumeTps())`).

## 2. Use case and impact

Consume TPS is the primary ingestion-rate signal when triaging backlog. Today the Studio group list shows total lag and delay seconds but not the rate at which the group drains its backlog, so operators cannot distinguish "healthy but large backlog" from "stalled" without leaving the page. The data is already fetched: `RocketMQAdminClientImpl.fillConsumeStats` calls `admin.examineConsumeStats(name)` (the same call the classic dashboard uses) but drops `stats.getConsumeTps()`.

The topic → consumers view already surfaces consume TPS (`TopicConsumerVO.consumeTps`, rendered as 消费 TPS on the topic page), so the group list lacking it is an inconsistency rather than a deliberate product stance.

## 3. Why it matters

- Parity with the parent project's consumer management page.
- Consistency within Studio: the same metric is already shown one view away.
- Zero extra broker calls: the value comes from the existing `examineConsumeStats` response (verified populated by rocketmq-tools 5.5.0 `DefaultMQAdminExtImpl.examineConsumeStats`, which accumulates `consumeTps` across brokers).

## 4. Expected behavior / acceptance criteria

1. `ConsumerGroupVO` carries `consumeTps`, set from `stats.getConsumeTps()` whenever broker consume stats are available (same availability semantics as `totalLag`/`delaySeconds`).
2. The consumer group list renders a 消费 TPS column (formatted like the topic page's TPS cells) with sorting.
3. Both CSV export paths (server `/groups/export` and demo-mode client export) include a `Consume TPS` column next to `Total Lag`.

## 5. Related PR

Fix: #4247.

Contributor guide

No contributing guide indexed for this repository

Research direction

Start with ConsumerGroupVO and RocketMQAdminClientImpl.fillConsumeStats, then inspect the consumer group list and the existing topic-page TPS rendering in frontend-new/src/pages/Consumer/consumer.jsx. Trace both /groups/export and the demo-mode client export. Done means consumeTps is populated, displayed with sorting, and included beside Total Lag in both CSV paths.

Written by the indexing model from the issue text.

Assessment

Tech stack
java, javascript
Domain
backend, frontend
Issue type
Feature
Difficulty
3/5
Estimated time
1-2 days
Activity status
Active
Clarity
Clearly specified
Newbie friendliness
78/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.