5
微服务:处理最终一致性
假设我们有一个更新用户密码的功能。 单击“更新密码”按钮后,会将UpdatePasswordEvent发送到预订了3个其他服务的主题: 实际更新用户密码的服务 一种更新用户密码历史记录的服务 发出电子邮件通知用户其密码已更改的服务。 根据我对最终一致性的了解,所有这些服务(消费者)将同时接收事件并分别处理它们,在良好的情况下,这将导致数据保持一致。 但是,如果服务无法处理事件怎么办?例如突然断开连接,数据库错误等...处理这些事务失败的好的模式/做法是什么? 我当时正在考虑创建一个RollbackTopic,如果任何事件都无法处理,将在一个主题中创建一个RollbackEvent,其中“ rollback services”将完成其工作并将数据还原