Azure active directory 如何在顺序处理多个Azure资源时实现事务概念

Azure active directory 如何在顺序处理多个Azure资源时实现事务概念,azure-active-directory,azure-cosmosdb,distributed-transactions,azure-storage-queues,Azure Active Directory,Azure Cosmosdb,Distributed Transactions,Azure Storage Queues,在我的应用程序中,通过POST/users REST webapi端点创建新用户记录时,下面是涉及的步骤 步骤1:在Azure Active DirectoryAAD中创建条目 步骤2:步骤1成功后,向关注的用户发送电子邮件通知,告知我们应用程序中的用户创建情况。此功能已使用Azure storage queue&sendgrid实现。目前,步骤2的故障不会回滚步骤1 步骤3:步骤2成功后,在Azure cosmos数据库中创建用户文档。目前,步骤3失败不会回滚步骤2或步骤1 以上三个步骤都必须

在我的应用程序中,通过POST/users REST webapi端点创建新用户记录时,下面是涉及的步骤

步骤1:在Azure Active DirectoryAAD中创建条目

步骤2:步骤1成功后,向关注的用户发送电子邮件通知,告知我们应用程序中的用户创建情况。此功能已使用Azure storage queue&sendgrid实现。目前,步骤2的故障不会回滚步骤1

步骤3:步骤2成功后,在Azure cosmos数据库中创建用户文档。目前,步骤3失败不会回滚步骤2或步骤1

以上三个步骤都必须作为工作单元处理,它们必须像db事务/回滚一样一起成功或失败。不应该出现一个步骤成功而其他步骤失败的情况,因为它最终会创建脏记录


对于上述涉及3种Azure资源的3个步骤,实现全部成功或全部失败的最佳/有效方法是什么?

我不知道在不同Azure资源之间执行事务的机制,如您所述。真正的事务只适用于数据库服务和其他一些服务,但不适用于不同的服务


有鉴于此,您的代码将需要适当地处理故障情况和清理。

即使仅Cosmos DB也只有非常有限的事务支持。如果事务跨越多个分布式服务。您需要实现自己的事务。然而,通常情况下,不值得这么麻烦。考虑是否周期性地扫描任何不一致,然后清理。


如果确实需要事务,可以实现一个资源管理器来使用System.transactions中的.NET功能。有关起点,请参阅。

这些服务之间都没有内置的事务管理,因此这实际上取决于您根据特定需要实施。因此,这个问题在这里是离题的,因为它太宽泛了。此外,请注意,这里的问题没有保证回复时间,答案是自愿发布的。没有必要发布后续评论敦促人们回答,而在发布评论之前,您的问题只活跃了大约一个小时。