在 MassTransit 中使用 Kafka rider 进行异常处理

Exception handling using Kafka rider in MassTransit

在 MassTransit 中使用像 RabbitMQ 这样的传输时,当抛出异常时,消息进入队列 queue_name_error。但是使用Kafka,没有_error后缀的主题,也没有支持传输的类似队列。如何使用Kafka 和MassTransit 正确处理异常,以及在哪里可以找到错误消息?

由于 Kafka(和 Azure Event Hub)本质上是带有奇特 API 的日志文件,因此不需要 _error 队列,因为没有无论如何都要排队。也没有死信。因此,将故障消息移动到 _error 的 MassTransit 内置错误处理不适用(也没有意义)。

您可以将重试中间件(UseMessageRetry 等)与主题端点一起使用,以处理暂时性异常。您还可以记录毒消息的偏移量来处理它们。偏移量不变,消息保留在主题中,直到达到到期时间。