首页 > 解决方案 > MassTransit - 如何处理 MessageLockLostException 场景

问题描述

如果消费者正在执行并且由于持续时间到期或间歇性连接丢失而同时丢失消息的锁定-如何从消费者内部潜在地处理这种情况,因为当前如果消费者完成,MessageLockLostException则抛出另一个实例消费者已经开始了。

为了解决这个问题 - 我们编写了幂等消费者,然而,这仍然是一个问题,第一个实例(在失去锁之前执行的那个)会引发异常,因为这会导致消息{queueName}_error默认通过 MassTransit 管道似乎忽略了这样一个事实,即此时消息锁已丢失,并且已启动同一消息的新消费者实例。

所以这个困境的总结是我们可以有效地得到一个成功确认的消息以及它在错误队列中。我正在寻找是否有人可能成功地处理了类似的情况,或者是否有一些钩子MassTransit让消费者可以确定它是否仍然对正在处理的消息具有活动锁定。

标签: masstransit

解决方案


推荐阅读