Rabbitmq MassTransit—在重试之间存储状态的位置
我使用MassTransit(队列使用RabbitMq)对每条消息进行顺序处理,这涉及到许多步骤 我希望能够在Rabbitmq MassTransit—在重试之间存储状态的位置,rabbitmq,masstransit,Rabbitmq,Masstransit,我使用MassTransit(队列使用RabbitMq)对每条消息进行顺序处理,这涉及到许多步骤 我希望能够在IConsumeContext中的某个位置存储与每个特定消息相关的“处理状态”信息,以便例如,如果消息处理在步骤2失败,在下次重试时,我将从步骤2继续,不再重复步骤1 可能吗 我看到的一些可能的方法是改变信息本身,但我不知道这是否是标准的做法 另外,消息上有一个Headers属性,但我不确定这是干什么用的 以前有人这样做过吗 更新: 我可能只是使用带有循环和延迟的try/catch块,但
IConsumeContext
中的某个位置存储与每个特定消息相关的“处理状态”信息,以便例如,如果消息处理在步骤2失败,在下次重试时,我将从步骤2继续,不再重复步骤1
可能吗
我看到的一些可能的方法是改变信息本身,但我不知道这是否是标准的做法
另外,消息上有一个Headers
属性,但我不确定这是干什么用的
以前有人这样做过吗
更新:
我可能只是使用带有循环和延迟的
try/catch
块,但我不知道是否最好避免这种情况。处理此类问题的最佳方法是Saga via。使重试明确并成为您的域的一部分
我们已经在较低的级别进行重试,如果抛出异常,它将被抛出到队列中并重试,直到达到最大重试次数。然后将消息抛出到错误队列中。您还可以在上下文中调用RetryLater()
。报头中有一个重试计数,例如已计数重试次数