我目前在微服务中使用事件驱动架构。我有一个与基于事件的系统有关的问题:
例如,假设我有一个对 ProfileChangeEvent 做出反应的 Person 模型(包含 Person 需要更新的名称)。现在我在步骤中有以下情况:
- 将配置文件名称更改为“Mike”并使用 name='Mike' 发布 ProfileChangeEvent
- 再次将配置文件名称更改为 'Micheal' 并使用 name='Michael' 发布 ProfileChangeEvent
- 这两个事件以正确的顺序到达,但第一个事件处理失败,事件最终进入死信队列(DLQ),最终人的名字是“迈克尔”,因为第二个事件消费成功。
- 一段时间后,我注意到 DLQ 中的第一个失败事件并重新发布它并且消费成功,现在人的名字是“迈克”,这是不正确的,因为“迈克尔”实际上是最近更新的值。
请提供有关如何处理此类情况的建议?