RunManager
Defined in: packages/rxdb-plugin-trigger/src/core/run-manager.ts:66
RunManager - 任务运行生命周期管理器
负责 TriggerRun 实体的完整生命周期,包括:
核心职责:
- 创建运行记录(createRun / createBatchRuns)
- 执行任务(executeRun)
- 幂等性保证:通过 idempotencyKey 防止重复创建
- 分布式锁:使用 CAS 原子操作获取执行租约(lease)
- 重试机制:支持指数退避重试和自定义 catchError
- 进度追踪:支持 debounced 进度更新
- 孤儿处理:恢复因标签页崩溃而遗留的 EXECUTING 任务
- TTL 管理:自动标记过期任务为 EXPIRED
并发安全:
- 使用 lease 机制确保同一时间只有一个执行者
- CAS 原子更新防止多标签页同时修改同一行数据
- 心跳续约(lease renewal)防止执行者崩溃后任务永久挂起
重试策略:
- 默认最多 3 次重试,指数退避(factor=2)
- 支持自定义 retry 配置和 catchError 错误处理
- 跳过重试时调用方可通过 catchResult.skipRetrying 显式声明
Constructors
Constructor
new RunManager(
rxdb,
registry,
queueEngine,
tabId,
atomicTransition?,
options?): RunManager;
Defined in: packages/rxdb-plugin-trigger/src/core/run-manager.ts:79
Parameters
| Parameter | Type |
|---|---|
rxdb | RxDB |
registry | TaskRegistry |
queueEngine | QueueEngine |
tabId | string |
atomicTransition? | AtomicTransition |
options? | { leaseDurationMs?: number; leaseRenewalMs?: number; } |
options.leaseDurationMs? | number |
options.leaseRenewalMs? | number |
Returns
RunManager
Methods
cancelRun()
cancelRun(runId): Promise<void>;
Defined in: packages/rxdb-plugin-trigger/src/core/run-manager.ts:424
Parameters
| Parameter | Type |
|---|---|
runId | string |
Returns
Promise<void>
createBatchRuns()
createBatchRuns(
taskId,
items,
batchId): Promise<TriggerRun[]>;
Defined in: packages/rxdb-plugin-trigger/src/core/run-manager.ts:150
Parameters
| Parameter | Type |
|---|---|
taskId | string |
items | object[] |
batchId | string |
Returns
Promise<TriggerRun[]>
createRun()
createRun(
taskId,
payload,
options?): Promise<TriggerRun>;
Defined in: packages/rxdb-plugin-trigger/src/core/run-manager.ts:96
Parameters
| Parameter | Type |
|---|---|
taskId | string |
payload | unknown |
options? | TriggerOptions |
Returns
Promise<TriggerRun>
destroy()
destroy(): void;
Defined in: packages/rxdb-plugin-trigger/src/core/run-manager.ts:599
Returns
void
executeRun()
executeRun(runId, options?): Promise<void>;
Defined in: packages/rxdb-plugin-trigger/src/core/run-manager.ts:242
Parameters
| Parameter | Type |
|---|---|
runId | string |
options? | { queueName?: string; queueSlotAcquired?: boolean; } |
options.queueName? | string |
options.queueSlotAcquired? | boolean |
Returns
Promise<void>
expireRun()
expireRun(run): Promise<void>;
Defined in: packages/rxdb-plugin-trigger/src/core/run-manager.ts:572
Parameters
| Parameter | Type |
|---|---|
run | TriggerRun |
Returns
Promise<void>
findDelayedReady()
findDelayedReady(now, limit): Promise<TriggerRun[]>;
Defined in: packages/rxdb-plugin-trigger/src/core/run-manager.ts:522
Parameters
| Parameter | Type |
|---|---|
now | Date |
limit | number |
Returns
Promise<TriggerRun[]>
findExpiredRuns()
findExpiredRuns(now, limit): Promise<TriggerRun[]>;
Defined in: packages/rxdb-plugin-trigger/src/core/run-manager.ts:556
Parameters
| Parameter | Type |
|---|---|
now | Date |
limit | number |
Returns
Promise<TriggerRun[]>
findQueuedRuns()
findQueuedRuns(limit): Promise<TriggerRun[]>;
Defined in: packages/rxdb-plugin-trigger/src/core/run-manager.ts:581
Parameters
| Parameter | Type |
|---|---|
limit | number |
Returns
Promise<TriggerRun[]>
findStaleLeases()
findStaleLeases(now, limit): Promise<TriggerRun[]>;
Defined in: packages/rxdb-plugin-trigger/src/core/run-manager.ts:539
Parameters
| Parameter | Type |
|---|---|
now | Date |
limit | number |
Returns
Promise<TriggerRun[]>
getRun()
getRun(runId): Promise<TriggerRun | undefined>;
Defined in: packages/rxdb-plugin-trigger/src/core/run-manager.ts:664
Parameters
| Parameter | Type |
|---|---|
runId | string |
Returns
Promise<TriggerRun | undefined>
handleOrphan()
handleOrphan(run): Promise<void>;
Defined in: packages/rxdb-plugin-trigger/src/core/run-manager.ts:462
Parameters
| Parameter | Type |
|---|---|
run | TriggerRun |
Returns
Promise<void>
onReady()
onReady(): Promise<number>;
Defined in: packages/rxdb-plugin-trigger/src/core/run-manager.ts:615
Returns
Promise<number>
replayRun()
replayRun(runId, options?): Promise<TriggerRun>;
Defined in: packages/rxdb-plugin-trigger/src/core/run-manager.ts:653
Parameters
| Parameter | Type |
|---|---|
runId | string |
options? | TriggerOptions |
Returns
Promise<TriggerRun>
transitionToQueued()
transitionToQueued(runId): Promise<boolean>;
Defined in: packages/rxdb-plugin-trigger/src/core/run-manager.ts:507
Parameters
| Parameter | Type |
|---|---|
runId | string |
Returns
Promise<boolean>