w4n9hu1's Blog

事件驱动架构中的异常处理

Event-Driven System

event-driven

1. Retry

当遇到一些简单的异常,比如Http请求超时,这时重试是最简单的机制,可以用一些第三方库,比如Polly,来处理重试逻辑。

2. Retry Queue

当遇到数据一致性问题,导致Porcessor无法立即处理时候,可以将消息丢到Retry队列,防止消息的阻塞。

重试达到一定次数的消息,也应该丢入到Retry队列。

3. Dead Letter Queue

当Retry队列中的消息再次被消费,仍旧发生未知的异常,应将消息丢入到Dead队列,人工分析找出原因。若Processor问题导致,等到问题修复后,再将Dead队列的数据丢入到Retry队列。

4. Drop

当遇到一些已知异常,比如消息格式异常,枚举超范围等,可以直接将消息丢弃。

event2