You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Hangfire Pro批量调度树形依赖任务?

使用Hangfire Pro实现依赖型批量任务调度

Hangfire Pro的Batch API完全支持你描述的树形依赖任务调度场景,专业版许可证覆盖该功能,可以精准控制任务的执行顺序与依赖关系。

核心实现示例

假设你已经定义了Task1()至Task12()这12个计算任务方法,以下是基于Hangfire Pro API的调度代码:

using Hangfire;
using Hangfire.Pro;
using Hangfire.Pro.Batch;

// 启动批量任务组
var batchId = BatchJob.StartNew(batch =>
{
    // 1. 调度无依赖的初始任务1-6,并行执行
    var job1 = batch.Enqueue(() => Task1());
    var job2 = batch.Enqueue(() => Task2());
    var job3 = batch.Enqueue(() => Task3());
    var job4 = batch.Enqueue(() => Task4());
    var job5 = batch.Enqueue(() => Task5());
    var job6 = batch.Enqueue(() => Task6());

    // 2. 任务7等待1、2、3全部完成后执行
    var job7 = batch.ContinueWith(new[] { job1, job2, job3 }, () => Task7());

    // 3. 任务8等待4完成后执行
    var job8 = batch.ContinueWith(job4, () => Task8());

    // 4. 任务9等待5、6全部完成后执行
    var job9 = batch.ContinueWith(new[] { job5, job6 }, () => Task9());

    // 5. 任务10等待7、8、9全部完成后执行
    var job10 = batch.ContinueWith(new[] { job7, job8, job9 }, () => Task10());

    // 6. 链式依赖:任务11等10完成,任务12等11完成
    var job11 = batch.ContinueWith(job10, () => Task11());
    batch.ContinueWith(job11, () => Task12());
});

关键API说明

  • BatchJob.StartNew: 创建一个批量任务容器,所有相关任务都在该容器内管理,支持统一监控、取消等操作。
  • batch.Enqueue: 添加无依赖的任务,这些任务会立即进入队列并行执行。
  • batch.ContinueWith: 指定后续任务的依赖条件,可传入单个或多个前置任务ID,只有所有依赖任务执行完成后,后续任务才会被调度。

任务输出传递(可选)

如果需要将前置任务的输出作为后续任务的输入,可以通过JobContinuation.GetResult<T>获取前置任务的返回值,示例如下:

// 示例:Task1返回计算结果,Task7接收该结果
public int Task1() => /* 计算逻辑,返回结果 */;
public void Task7(int task1Result, int task2Result, int task3Result) => /* 使用结果计算 */;

// 在批量任务中传递参数
var job1 = batch.Enqueue(() => Task1());
var job2 = batch.Enqueue(() => Task2());
var job3 = batch.Enqueue(() => Task3());

var job7 = batch.ContinueWith(
    new[] { job1, job2, job3 }, 
    () => Task7(
        JobContinuation.GetResult<int>(job1),
        JobContinuation.GetResult<int>(job2),
        JobContinuation.GetResult<int>(job3)
    )
);

许可证支持确认

Hangfire Pro的专业版许可证完全包含Batch API的所有功能,包括这种复杂的依赖调度、批量任务管理、结果传递等场景,符合你的需求。

内容的提问来源于stack exchange,提问作者herme 0

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 23:40:48