【发布时间】:2020-11-29 15:30:00
【问题描述】:
设置
我正在使用带有 EFCore 的 ASPNET Core。
我已设置 MassTransit 以帮助在服务之间复制 Users 和 Tokens。
每个User有多个Tokens,它们通过Token.UserId外键连接。
问题
创建新的User 时,会发生两件事:
-
User和新鲜的Token存储在数据库中 -
UserCreated和TokenCreated被发送到消息总线模拟
实际上,Token(因为它更小)在User 之前被处理,并且弹出一个错误提示User of given Id defined in Token.UserId doesn't exist in table Users - 这是真的,因为User 是与Token 一起异步创建的。
我找到了一些解决方案,例如删除外键约束或在 Consume 方法中实现延迟 - 这两种方法似乎都是最终会回到我身边的惰性解决方案。
有没有办法将两个事件放在同一个队列中并按顺序执行它们,或者我应该只在UserCreated 中包含初始令牌?
【问题讨论】:
标签: entity-framework-core masstransit