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

如何取消MassTransit Job Consumer中正在执行的任务?

解决MassTransit Job Consumers任务取消问题
  • 通过API发送取消命令
    首先需要记录任务启动时的JobId(可从JobContext<>中获取),然后通过MassTransit的总线发布CancelJob命令来触发取消:

    // 假设已获取到目标任务的JobId
    var targetJobId = Guid.Parse("xxx-xxx-xxx");
    await bus.Publish<CancelJob>(new { JobId = targetJobId });
    

    这个命令会被Job Consumer的JobContext监听,自动触发传入的CancellationToken。

  • 确保任务代码响应取消信号
    你的代码需要在长任务执行过程中定期检查CancellationToken,比如在循环步骤中或者异步操作里传入token:

    public async Task Consume(ConsumeContext<JobContext<YourJobRequest>> context)
    {
        var jobContext = context.Message;
        // 将token传入长任务
        await ExecuteLongRunningTask(jobContext.CancellationToken);
    }
    
    private async Task ExecuteLongRunningTask(CancellationToken cancellationToken)
    {
        foreach (var step in TaskSteps)
        {
            // 检查是否收到取消信号
            cancellationToken.ThrowIfCancellationRequested();
            // 执行单步任务
            await ExecuteStep(step, cancellationToken);
        }
    }
    
  • 通过MassTransit Dashboard取消(如果已启用)
    若项目配置了MassTransit Dashboard,可直接在界面中找到对应的任务条目,点击取消按钮即可触发取消操作,底层逻辑和发送CancelJob命令一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 15:20:22