zmuxuny opened a new issue, #4497:
URL: https://github.com/apache/rocketmq-dashboard/issues/4497

   ### Before Creating the Feature Request
   
   - [x] I searched open/closed issues and PRs and found no cloud 
consumer-group settings implementation.
   - [x] I understand non-trivial features should be agreed in the issue before 
a PR is sent.
   
   ### Problem
   
   The Consumer Group detail modal already has a **Settings** tab, but Studio 
disables it for Aliyun and Tencent instances. Operators can create/delete cloud 
groups and inspect progress/subscriptions, yet changing supported group 
settings still requires leaving Studio for the cloud console or provider 
CLI/API.
   
   The SDK versions already pinned by Studio expose the required management 
APIs, so no dependency upgrade is needed:
   - Aliyun RocketMQ 5.x: `GetConsumerGroup` / `UpdateConsumerGroup`.
   - Tencent Trocket 5.x: `DescribeConsumerGroup` / `ModifyConsumerGroup`.
   
   ### Proposed design
   
   Add `CONSUMER_GROUP_SETTINGS` to the provider capability contract and route 
the existing settings endpoint through `InstanceProvider` instead of an 
Apache-only gate. The provider returns an `editableFields` list, so the web 
form renders and submits only fields that the selected provider actually 
supports.
   
   **Apache** keeps the existing behavior unchanged: retry queue count, max 
retry count, consume-enable, orderly-consume, and broadcast-consume remain 
editable.
   
   **Aliyun**:
   - read current state with `GetConsumerGroup`;
   - edit `maxRetryTimes`, `deadLetterTargetTopic`, `maxReceiveTps`, `remark`, 
and `fixedIntervalRetryTime` when the current retry policy is fixed-interval;
   - show delivery order and retry-policy type as read-only;
   - preserve the current retry-policy type and delivery semantics when 
updating, because Aliyun documents `deliveryOrderType` as not modifiable and 
requires a complete retry-policy object in `UpdateConsumerGroup`.
   
   **Tencent**:
   - read current state with `DescribeConsumerGroup`;
   - edit `maxRetryTimes`, `consumeEnable`, `consumeMessageOrderly`, and 
`remark` through `ModifyConsumerGroup`;
   - GET current state before mutation so omitted fields are preserved.
   
   ### Safety and compatibility
   
   - Unsupported fields fail closed with HTTP 400 instead of being silently 
discarded.
   - Cloud mutations use the existing `MetadataService.executeWithAudit` path.
   - No schema migration or dependency upgrade.
   - Existing Apache request semantics stay compatible.
   - The UI shows a provider notice and builds the mutation payload from 
`editableFields`, not from a hard-coded union of all provider fields.
   
   ### Acceptance criteria
   
   1. The cloud Consumer Group Settings tab is usable for Aliyun and Tencent 
instances.
   2. Values are loaded from the provider's official management API.
   3. Only provider-supported fields are editable/submitted; unsupported fields 
are rejected server-side too.
   4. Omitted values are preserved during cloud updates.
   5. Aliyun delivery order/retry-policy type are not accidentally changed.
   6. Apache settings behavior remains unchanged.
   7. Provider mapping, controller/service compatibility, and cloud UI behavior 
have focused tests.
   
   ### Prototype verification
   
   I built a local prototype only to validate the design; I will wait for 
maintainer feedback here before opening a PR. On current `master` 
(`987b748e8f4f421c5cd3c4c4e51a064cc7e59f18`):
   - Java 21 focused backend suite: **229 tests passed**, 0 failures/errors; 
Checkstyle 0 violations.
   - Provider contract tests cover Aliyun/Tencent read, merge-update, 
immutable/unsupported fields, and Apache compatibility.
   - Tencent cloud UI regression verifies the tab is enabled and the save 
payload excludes Apache-only fields.
   - TypeScript/Vite production build, touched-file ESLint, Prettier, and `git 
diff --check` pass.
   
   AI-assisted design/implementation prototype; SDK signatures and provider 
semantics were independently checked against the pinned SDKs and current 
provider code.
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to