MassTransit 补偿失败 - 死信?
MassTransit compensation failure - deadletter?
我是 MassTransit 的新手(使用 rabbitmq),如果这是一个愚蠢的问题,请原谅我。
我只是想知道一个不成功的赔偿是怎么处理的?所以所有重试都失败了,即没有补偿成功 - 我想消息应该进入各种死信队列,以便我在以后手动重试,一旦确定再次重试?
如有任何帮助,我们将不胜感激。
如果重试策略无法帮助处理邮件并且没有配置重新投递(second-level 重试),则邮件将进入有害队列。中毒队列在 MassTransit 中称为 "error queues"。
有害队列与您的接收端点队列具有相同的队列名称,带有 _error
后缀。
死信是另外一回事,它用于端点收到但端点不知道如何处理的消息。死信队列在 MassTransit 中称为 "skipped message queues",后缀为 _skipped
.
更新: 这是通用的 MassTransit 行为。正如克里斯在另一个答案中所描述的那样,Courier 的工作方式不同。我不清楚问题是关于使用路由单。
如果您正在使用传送名单,并且在补偿 activity 期间抛出异常,则会发布 RoutingSlipCompensationFailed
事件。在那一点上,没有重试,没有error/dead-letter,等等。路由选择在那个点被认为是"ended",并且错误的分布式事务(因此导致调用补偿方法)结束了.
使用路由清单时,重要的是观察路由清单运行时产生的事件(activity completed/compensated/faulted,以及整个路由清单 completed/faulted/compensation 失败)——通常使用一个传奇。
我建议查看我 GitHub 上的 Demo-Registration 示例,以了解如何结合使用 sagas 和路由单来执行可靠的分布式事务。
我是 MassTransit 的新手(使用 rabbitmq),如果这是一个愚蠢的问题,请原谅我。
我只是想知道一个不成功的赔偿是怎么处理的?所以所有重试都失败了,即没有补偿成功 - 我想消息应该进入各种死信队列,以便我在以后手动重试,一旦确定再次重试?
如有任何帮助,我们将不胜感激。
如果重试策略无法帮助处理邮件并且没有配置重新投递(second-level 重试),则邮件将进入有害队列。中毒队列在 MassTransit 中称为 "error queues"。
有害队列与您的接收端点队列具有相同的队列名称,带有 _error
后缀。
死信是另外一回事,它用于端点收到但端点不知道如何处理的消息。死信队列在 MassTransit 中称为 "skipped message queues",后缀为 _skipped
.
更新: 这是通用的 MassTransit 行为。正如克里斯在另一个答案中所描述的那样,Courier 的工作方式不同。我不清楚问题是关于使用路由单。
如果您正在使用传送名单,并且在补偿 activity 期间抛出异常,则会发布 RoutingSlipCompensationFailed
事件。在那一点上,没有重试,没有error/dead-letter,等等。路由选择在那个点被认为是"ended",并且错误的分布式事务(因此导致调用补偿方法)结束了.
使用路由清单时,重要的是观察路由清单运行时产生的事件(activity completed/compensated/faulted,以及整个路由清单 completed/faulted/compensation 失败)——通常使用一个传奇。
我建议查看我 GitHub 上的 Demo-Registration 示例,以了解如何结合使用 sagas 和路由单来执行可靠的分布式事务。