【发布时间】:2020-09-14 05:33:52
【问题描述】:
我已经阅读了有关错误处理和故障的 MT 文档,并放置了一些代码来发布故障,并编写了一个故障使用者来在使用 Polly 重试几次后收听故障消息。
我有一个队列消费者使用 MassTranasit 从 RabbitMQ 获取消息并通过 Http api 发送到云系统。我已经处理了所有可能的异常,并且还在 Polly retry 中包装了 http 调用,以解决暂时的网络错误。但是这种方法的问题是,在重试用尽后,消息实际上会被放弃处理。
假设目标系统停机 10 小时(我们之前不知道这种中断,否则我将计划停止消费者服务),我们可以使用 MassTransit 停止将消息从队列拉入的最佳策略是什么消费者?有没有办法根据失败次数等停止接收消息?
谢谢
【问题讨论】:
-
您应该使用 MassTransit 的重试支持,而不是下面 Alexey 所述的“polly”,并且您应该进行监控以检测这些错误(从日志中)并停止服务以避免循环通过每条消息队列只需要在服务可用后将它们铲回队列(来自_error)。
-
嗨,克里斯,感谢您的评论。您能否在下面的 Alexey 回复中查看我关于使用 Polly 而不是 MT 重试的评论?这有意义吗?
-
我支持 Chris 关于监控的观点。如果你抽象出远程系统客户端并使用健康检查来观察它的行为,你也可以让你的服务不健康并从外部处理它。
标签: rabbitmq masstransit