Expand description
异步任务框架
基于 Kafka 消息队列的任务分发与处理框架。
插件本身不持有任何 SQL 或表结构——所有持久化通过 TaskStorage trait 委托给业务方实现。
§核心能力
- 任务提交(Kafka 消息 + 通过
TaskStorage持久化) - 处理器注册(按
task_type分发到不同业务 Handler) - 重试机制(固定延迟/线性增长/指数退避)+ 死信队列
- 任务生命周期标记(PENDING → PROCESSING → COMPLETED/FAILED/CANCELLED/DEAD_LETTER)
alun_core::Plugin集成(通过PluginManager统一启动/停止)#[task_handler]宏注解自动发现 Handler(编译期 linkme 收集)- 配置从配置文件
[task]section 读取(TaskWorkerConfig实现 Deserialize)
§使用方式
ⓘ
// 1. 实现 TaskStorage(内部通过 db() 全局函数操作数据库)
struct DbTaskStorage;
impl TaskStorage for DbTaskStorage { ... }
// 2. 从配置文件读取配置,创建插件 → 注册到 App
let task_cfg: TaskWorkerConfig = cfg().custom.get("task")...unwrap_or_default();
let plugin = TaskPlugin::new(
task_cfg,
Arc::new(DbTaskStorage),
HandlerRegistry::new().from_discovered(),
)?;
app.plugin(plugin).scan().start().awaitStructs§
- Handler
Registry - 处理器注册中心
- Retry
Scanner - 重试扫描器
- Retryable
Task - 扫描到的可重试任务
- Submit
Batch Params - 批量任务提交参数
- Submit
Task Params - 任务提交参数
- Task
Config - 任务配置 —— 每种 task_type 对应一份配置
- Task
Handler Entry - 任务处理器注册条目 —— 编译期由
#[task_handler]宏收集 - Task
Message - 从 Kafka 消费到的任务消息
- Task
Metrics - 任务执行指标 —— 原子计数器,并发安全
- Task
Plugin - 任务插件
- Task
Producer - 任务生产者
- Task
Worker - 任务执行器
- Task
Worker Config - TaskWorker 运行时配置(可从配置文件
[task]section 反序列化)
Enums§
- Resource
Type - 资源类型
- Retry
Strategy - 重试策略
- Task
Priority - 任务优先级
- Task
Status - 任务状态枚举
Statics§
- TASK_
HANDLERS - 任务处理器分布式切片 ——
#[task_handler]宏注解的 handler 在此汇集
Traits§
- Task
Handler - 任务处理器特质
- Task
Storage - 任务持久化接口
Functions§
- compute_
retry_ delay - 计算重试延迟(秒)