事件源系统如何保证事件传递中的可靠性

时间:2018-11-21 13:11:59

标签: messaging event-sourcing

由于在事件源中事件存储不使用事务,因此,如果我们的业务逻辑崩溃了,那么在发布事件之后,我们如何保证在重新启动服务后不会两次发布该事件?

如果邮件已发布并传递两次,该如何删除重复邮件?

1 个答案:

答案 0 :(得分:0)

我不知道事件存储区不使用事务。我已经看到了事务性写操作,以确保正在编写预期的事件版本。

如果您希望至少一次交付(我认为是这样),则必须处理重复数据删除。有时建议您使用重复数据消除方法来维护所有已处理消息的索引,但是这样做并不完全安全,因为您只需最小化可以在其中创建重复项的代码部分,但不要完全消除可能性。如果您处理一条消息,但不更新索引,则将再次重新处理同一条消息。相反,您应该使所有动作均等幂。也就是说,两次执行相同的操作将产生相同的结果状态。如果您两次处理同一条消息,则它只能更新一次状态。