【问题标题】:MassTransit - Where to store state between retriesMassTransit - 在哪里存储重试之间的状态
【发布时间】:2015-04-27 09:37:25
【问题描述】:

我正在使用 MassTransit(以及用于队列的 RabbitMq)对涉及多个步骤的每条消息进行一些顺序处理。

我希望能够在IConsumeContext<MyMessage> 的某处存储与每条特定消息相关的“处理状态”信息,例如,如果消息处理在第 2 步失败,我会在下一次重试时从第 2 步继续,不再重复第 1 步。

这可能吗?

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

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

以前有人做过吗?

更新:

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

【问题讨论】:

    标签: rabbitmq masstransit


    【解决方案1】:

    处理此类事情的最佳方式是通过Automatonymous 发送 Saga。使重试明确并成为您域的一部分。

    我们已经在较低级别进行重试,如果抛出异常,它会被扔回队列并重试,直到达到最大重试次数。然后消息被扔进错误队列。您也可以在上下文中调用RetryLater()。标题中有一个重试计数,用于计算重试次数。

    【讨论】:

      猜你喜欢
      • 2022-08-15
      • 2021-09-27
      • 2012-04-07
      • 2011-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多