wxyun2 opened a new pull request, #1393: URL: https://github.com/apache/rocketmq-clients/pull/1393
### Which Issue(s) This PR Fixes Fixes #1391 ### Brief Description 在平台线程模式下,每个 Java 客户端的定时调度、异步 RPC 响应和回调线程池默认按 CPU 核数配置。多个客户端实例会重复持有这些执行器,但各类任务的实际负载并不相同;现有 `consumptionThreadCount` 只控制消费执行器,无法分别调整它们。 本 PR 在 `ClientConfigurationBuilder` 新增三个可选配置: - `setSchedulerThreadCount` - `setAsyncWorkerThreadCount` - `setCallbackThreadCount` 配置传递给各执行器的构造路径,应用可以通过公开 API 分别分配线程资源。 **配置与兼容逻辑:** - 只接受正整数;未设置的字段继续使用 CPU 核数默认值,各字段独立生效。 - scheduler 始终使用指定线程数。async/callback 在平台线程模式或旧 JDK 的虚拟线程回退路径使用指定值;真正启用虚拟线程时保留原有 per-task 执行方式。 - 保持原有队列、线程工厂、拒绝策略、实例隔离和 SDK 关闭所有权。 此 PR 只涉及构建期的内部执行器配置,可独立合并。公开 API、README 和 JDK 21 CI 覆盖一并补充。 ### How Did You Test This Change? 在此 PR 的独立分支、macOS arm64 上验证: - JDK 17.0.20.1:完整 `mvn -B package` 成功,311 项测试,0 失败、0 错误,1 项上游已有测试跳过;Checkstyle、SpotBugs 及普通/shaded JAR 构建通过。 - JDK 21.0.11:执行本 PR 更新后的 CI 专项命令成功,44 项测试,0 失败、0 错误,0 项条件测试跳过。 - 生产代码与 API 按上游 Java 8 release 目标编译。 JDK 21 复现命令: ```sh mvn -B -pl client -am -Dspotbugs.skip=true -Dnet.bytebuddy.experimental=true -Dtest=ClientConfigurationTest,ClientImplTest,ClientManagerImplTest,ExecutorServicesTest -DfailIfNoTests=false -Dsurefire.failIfNoSpecifiedTests=false test ``` 新增测试覆盖默认行为、独立配置、非法参数不污染配置、配置快照、多客户端隔离、真实任务执行、执行器终止及虚拟线程兼容。JDK 21 使用上游现有 Byte Buddy 的测试兼容选项 `-Dnet.bytebuddy.experimental=true`,未改变生产依赖或运行参数。 -- 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]
