我正在处理一个使用MassTransit的项目,但由于工作时间长,不得不使用Job Consumers来避免RabbitMQ中的超时。
然而,这带来了取消这些正在进行的工作的问题。通过RabbitMQ web界面,我们可以清除队列以重置管道中的暂停,但这显然不适用于作业使用者。
我的代码确实尊重与JobContext<...>
参数一起传递给IJobConsumer
的CancellationToken
,但我不知道如何触发它,我也找不到任何关于如何做到这一点的文档。
您可以通过发布CancelJob
命令来取消正在运行或等待运行的作业:
await x.Publish<CancelJob>(new { JobId = jobId });