我有一个使用 Azure 服务总线主题和服务总线队列运行的水平事件源驱动应用程序。我的所有服务器都通过主题接收了一些用于建立我的域模型状态的事件,而队列中的事件(接收频率更高且不改变域模型状态的事件)在服务器之间分发,以便分发加载。
现在,每次我的一个服务器通过队列或主题接收到一个事件时,它都会将它存储在一个 DocumentDB 中,用作事件存储。
现在问题来了。如何确定同一个文档不会被插入两次?假设 3 个服务器接收相同的事件。他们都试图存储它。如果他们决定同时执行所有操作,我怎样才能使其失败 2 台服务器?是否可以在 DocumentDB 中设置任何形式的唯一约束或某种事务范围以防止文档被插入两次?