如何将 Azure 服务总线与 Azure DocumentDB 事务性地结合使用

How can I use Azure Service Bus transactionaly with Azure DocumentDB

我希望能够 save/update DocumentDB 中的文档,然后在 Azure 服务总线上发布事件,我希望这些以原子方式发生。

Azure 服务总线不支持分布式事务,因此使用 SQL 数据库,我保存记录并将记录放入消息队列 table,全部在 SQL 中交易。然后一个进程读取消息队列 table 并将消息放入队列并在成功时将它们从队列中删除(在消息被添加两次的情况下利用服务总线的重复数据删除)。

但是 DocumentDB 不支持跨集合的事务,所以我无法更新文档,然后将文档添加到消息队列集合。

如何确保我对文档所做的更改在总线上发布?

我不完全确定我理解这个问题,但是...从交易的角度来看,您可以将数据和 queue 文档放在同一个集合中(只需确保您有某种类型的区分器,例如用于过滤的 Type 属性。

编辑 - 反映触发器和事务

此外,DocumentDB 支持预触发和post-触发操作,因此您可以设置一个post-触发器,用于在数据文档插入完成后写入附加文档。如评论中所述(根据@Ryan):post-触发操作包含在交易中。