大众运输错误队列正在消耗,但仍不为空

use*_*417 3 .net masstransit rabbitmq

我正在使用带有 RabbitMq 的 Mastransit 3.5.0。如果队列使用者抛出异常,则默认处理 MoveExceptionToTransportFilter 并移至 _error 队列。对于 _error 队列,我有单独的消费者:Consume(ConsumeContext> context)

Fault 的行为则大不相同。部分错误被处理并从_error 队列中移除,但部分错误消息仍然保留在错误队列中,不被该消费者消费。据我了解,如果我有故障消费者,那么 _error 队列应该是空的。

我找不到解释,为什么错误仍在队列中。也许是因为这些故障曾经被消耗过,但我在标题或其他地方找不到任何指示?

Ale*_*rev 5

这是不正确的。

  1. 您不应该从错误队列中消费。错误队列会累积使消费者崩溃的消息,以用于诊断目的。

  2. Faut<T>除了将消息移动到错误队列之外,还会发布消息。这两件事是无关的。

  3. 如果您有FaultFault<T>事件的消费者,您只需这样做 - 消费这些事件。它与错误队列中的消息无关。