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
  • 接收器首先接收消息2,然后接收消息1。这会错误地将其他服务(即接收方)上的相应对象更改为
    true
  • 我还没有找到任何证据证明这是可能的,但逻辑告诉我,这种情况是可能发生的。简单的解决方案是用列
    lastUpdatedByEventAt
    扩展接收方的db表,但是。。。我的场景并不是那么简单,因为消息也可以有其他对象字段,我不希望每个属性都有相应的列

    此外,我可能有一些事件处理程序,如果同一消息被接收两次,它们可能会引入错误。 逻辑告诉我,更简单的解决方案是为所有接收到的消息设置
    db table
    (类似于我已经为发布端的所有消息设置了
    db table
    ),并且接收方处理程序应该只将接收到的消息写入该
    。除了从
    表中读取
    并为每条消息执行处理程序之外,还会有其他一些作业(与发布服务器端类似)。但订购的问题不会用这个解决,因为我永远无法确定在执行当前消息的时候是否收到了“先前”消息