Azure事件总线接收消息并处理其顺序和复制
如何确保(或确保)接收者上的消息处理程序以正确的顺序更新数据库 例如,考虑这种情况:Azure事件总线接收消息并处理其顺序和复制,azure,architecture,event-bus,Azure,Architecture,Event Bus,如何确保(或确保)接收者上的消息处理程序以正确的顺序更新数据库 例如,考虑这种情况: 发布者发布消息,该消息表示某些对象(由其id描述)应将某些字段IsActive设置为true 发布者发布消息,表示某些对象应将相同的字段IsActive设置为false 接收器首先接收消息2,然后接收消息1。这会错误地将其他服务(即接收方)上的相应对象更改为true 我还没有找到任何证据证明这是可能的,但逻辑告诉我,这种情况是可能发生的。简单的解决方案是用列lastUpdatedByEventAt扩展接收方的d
id
描述)应将某些字段IsActive
设置为true
IsActive
设置为false
true
lastUpdatedByEventAt
扩展接收方的db表,但是。。。我的场景并不是那么简单,因为消息也可以有其他对象字段,我不希望每个属性都有相应的列
此外,我可能有一些事件处理程序,如果同一消息被接收两次,它们可能会引入错误。
逻辑告诉我,更简单的解决方案是为所有接收到的消息设置db table
(类似于我已经为发布端的所有消息设置了db table
),并且接收方处理程序应该只将接收到的消息写入该表
。除了从表中读取并为每条消息执行处理程序之外,还会有其他一些作业(与发布服务器端类似)。但订购的问题不会用这个解决,因为我永远无法确定在执行当前消息的时候是否收到了“先前”消息