MassTransit:取消长期运行的工作

问题描述

如何取消基于IJobConsumer的长期运行的工作?

我尝试将CancelJob发布到公共汽车,但是没有结果。

[HttpGet]
public async Task < IActionResult > Get() {
  var response = await _client.GetResponse < JobSubmissionAccepted > (new {
    Id = "test"
  });

  await Task.Delay(TimeSpan.FromSeconds(3));

  await _endpoint.Publish < CancelJob > (new {
    JobId = response.Message.JobId,Reason = "I give up"
  });

  return Ok(response.Message.JobId);
}

解决方法

取消工作消费方后,会发出CancellationToken的{​​{1}}属性的信号。令牌发出信号后,应由工作使用者的JobContext方法正确取消。