如何在 NServiceBus 中处理非常长的 运行 进程

How to handle very long running processes in NServiceBus

我正在使用 NServiceBus 来处理一些异步任务。偶尔我有一个任务需要处理10,000条记录,所以这需要几个小时。

我的问题是,当我一起处理这些记录时,我无法使用 NServiceBus 默认事务处理。

此外 - 如果我将这些记录分成 10,000 条较小的消息,它们将阻塞 MSMQ 几个小时,而期望功能需要几分钟的用户将等待数小时。

NServiceBus 有没有一种方法可以区分不同消息的优先级?

我会考虑将其分解成更小的批次(不一定是每条记录一条消息),并专门为这个过程提供一个单独的端点服务,这样其他东西就不会被搁置。如果将其分成批次并且您关心它们何时全部完成,那么我建议使用 saga 来跟踪该状态。