我们有一个由三个表组成的微服务,它的数据由事件填充,这些表相互关联,出于任何原因,我们收到一条消息,其中包含另一个表的外键,但主消息表仍然在 数据库没有保存,在这种情况下我们会得到一个错误(来自 SQL),在这种情况下应该如何管理问题?
样本:
1。角色(身份证,姓名)
2。权限(Id,RoleId,名称)
Role-Queue -> Message ( Id = 2, Name = "...") |后者
Permission-Queue -> Message ( Id = 1, RoleId = 2, Name= "..." ) |前进
我是这样处理这个case的,反正这个异常是存在的,只要数据库中有[Role]没有创建的消息,[Permission]实体的Consumer就必须重试(Reject message from RabbitMQ & requeue),在数据库中创建了[Role]实体消息的情况。 , 下一次消费者重试消费一个 [ Permission ] 时,可以将消息插入数据库