Skip to main content

Crate alun_task

Crate alun_task 

Source
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().await

Structs§

HandlerRegistry
处理器注册中心
RetryScanner
重试扫描器
RetryableTask
扫描到的可重试任务
SubmitBatchParams
批量任务提交参数
SubmitTaskParams
任务提交参数
TaskConfig
任务配置 —— 每种 task_type 对应一份配置
TaskHandlerEntry
任务处理器注册条目 —— 编译期由 #[task_handler] 宏收集
TaskMessage
从 Kafka 消费到的任务消息
TaskMetrics
任务执行指标 —— 原子计数器,并发安全
TaskPlugin
任务插件
TaskProducer
任务生产者
TaskWorker
任务执行器
TaskWorkerConfig
TaskWorker 运行时配置(可从配置文件 [task] section 反序列化)

Enums§

ResourceType
资源类型
RetryStrategy
重试策略
TaskPriority
任务优先级
TaskStatus
任务状态枚举

Statics§

TASK_HANDLERS
任务处理器分布式切片 —— #[task_handler] 宏注解的 handler 在此汇集

Traits§

TaskHandler
任务处理器特质
TaskStorage
任务持久化接口

Functions§

compute_retry_delay
计算重试延迟(秒)