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

问题描述

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

解决方法

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

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