Rabbitmq MassTransit—在重试之间存储状态的位置

Rabbitmq MassTransit—在重试之间存储状态的位置,rabbitmq,masstransit,Rabbitmq,Masstransit,我使用MassTransit(队列使用RabbitMq)对每条消息进行顺序处理,这涉及到许多步骤 我希望能够在IConsumeContext中的某个位置存储与每个特定消息相关的“处理状态”信息,以便例如,如果消息处理在步骤2失败,在下次重试时,我将从步骤2继续,不再重复步骤1 可能吗 我看到的一些可能的方法是改变信息本身,但我不知道这是否是标准的做法 另外,消息上有一个Headers属性,但我不确定这是干什么用的 以前有人这样做过吗 更新: 我可能只是使用带有循环和延迟的try/catch块,但

我使用MassTransit(队列使用RabbitMq)对每条消息进行顺序处理,这涉及到许多步骤

我希望能够在
IConsumeContext
中的某个位置存储与每个特定消息相关的“处理状态”信息,以便例如,如果消息处理在步骤2失败,在下次重试时,我将从步骤2继续,不再重复步骤1

可能吗

我看到的一些可能的方法是改变信息本身,但我不知道这是否是标准的做法

另外,消息上有一个
Headers
属性,但我不确定这是干什么用的

以前有人这样做过吗

更新:


我可能只是使用带有循环和延迟的
try/catch
块,但我不知道是否最好避免这种情况。

处理此类问题的最佳方法是Saga via。使重试明确并成为您的域的一部分

我们已经在较低的级别进行重试,如果抛出异常,它将被抛出到队列中并重试,直到达到最大重试次数。然后将消息抛出到错误队列中。您还可以在上下文中调用
RetryLater()
。报头中有一个重试计数,例如已计数重试次数