Skip to content

[Enhancement][OPT-03] 为后台任务提供有界生产接入与明确生命周期策略 #188

Open

Description

@Aias00

总览:#180

代码依据

private TaskRepository taskRepository = new DefaultTaskRepository();

问题与目标

TaskToolsBuilder 与 TaskTool.Builder 默认创建 DefaultTaskRepository;该仓库使用 cached thread pool,并以 Map 保存任务结果,未自动限制线程数或结果保留。已有 BoundedTaskRepository 及容量/生命周期测试。

与既有任务关系

#118 与已合并 PR #166 已交付可选有界仓库,明确保留旧默认行为。本任务承接已有实现,解决生产接入、推荐默认与生命周期装配,不重复开发有界队列,也不认定 #118 未完成。

交付与验收

  • 对比保留旧构造器并提供生产配置/工厂、可选自动装配、版本化切换默认等方案,明确迁移成本后决定采用项。
  • 推荐接入路径显式配置并发数、排队容量、结果数/TTL及满载拒绝语义,文档有可运行示例。
  • 明确 Builder 创建和调用者注入仓库的生命周期所有权,关闭自有资源且不关闭调用者 executor。
  • 验证满载时 Supplier 未被调用、重复 taskId、结果淘汰、关闭/排空,以及自定义仓库覆盖行为。
  • 若改变默认行为,说明受影响应用、默认参数依据、目标版本与升级步骤;不能直接把拒绝策略当作无影响修改。

不实现 Redis Worker,不推翻已有 BoundedTaskRepository。

变更约束

本单来自静态代码审查,尚未运行复现或性能测试。实施先补充针对性验证;破坏性变更需比较更小/兼容方案,记录收益、消费者影响、迁移成本和版本策略。允许保留有充分理由的现有设计。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions