使用事件键并记录处理状态
触发源可能在超时或确认异常后再次发送同一事件。请将幂等键或已处理事件记录存储在持久位置,供后续运行检查。
只有在预期工作已提交后,才能将事件标记为完成。如果处理分为多个阶段,请记录每阶段状态,让重试可以安全续跑,而不是把部分处理的事件当成新事件。
处理并发重复投递
两个运行实例可能几乎同时检查同一个事件。请使用唯一约束、原子占用或数据存储支持的其他协调机制,避免它们在任一实例记录完成前都通过检查。
使用安全样例测试重复和并发投递,并检查最终状态。事件键的保留时间应覆盖来源的重试窗口,但不要不必要地长期保存完整载荷。