DocumentDB 独特的并发插入?

DocumentDB unique concurrent insert?

我有一个水平事件源驱动的应用程序,它使用 Azure 服务总线主题和服务总线队列运行。我的所有服务器通过主题接收一些用于构建我的域模型状态的事件,而队列中的事件(接收频率更高且不改变域模型状态的事件)分布在服务器之间,以便分发负载。

现在,每当我的一个服务器通过队列或主题接收到事件时,它会将其存储在用作事件存储的 DocumentDB 中。

问题来了。我如何确定同一个文档没有被插入两次?假设 3 个服务器接收到相同的事件。他们都试图存储它。如果 2 台服务器决定同时执行所有操作,我该如何使它失败?我可以在 DocumentDB 中设置任何形式的唯一约束或某种事务范围以防止文档被插入两次吗?

每个文档的 ID 属性 都有唯一性约束。您可以使用此约束来确保不会将重复文档写入集合。