2

У меня есть приложение с ведомым событием с горизонтальным событием, которое выполняется с использованием темы шины службы Azure и очереди служебной шины. Некоторые события для создания состояния моей модели домена принимаются по этой теме всеми моими серверами, в то время как те, которые находятся в очереди (те, которые получают гораздо чаще и не изменяют состояние модели домена), распределяются между серверами, чтобы распределить нагрузки.Уникальная параллельная вставка DocumentDB?

Теперь, каждый раз, когда один из моих серверов получает событие через очередь или тему, он хранит его в DocumentDB, который он использует в качестве хранилища событий.

Теперь вот в чем проблема. Как я могу быть уверен, что один и тот же документ не вставлен дважды? Скажем, 3 сервера получают одно и то же событие. Все они пытаются его сохранить. Как я могу сделать это неудачно для 2 серверов в случае, если они решили сделать все это одновременно? Есть ли какая-либо форма единственного ограничения, которую я могу установить в DocumentDB или какой-либо области транзакции, чтобы предотвратить вставку документа дважды?

+1

Возможно ли, чтобы вы разработали идентификатор так, чтобы он был таким же, если у вас был тот же документ? Если это так, просто пишите на этот id. –

ответ

4

Свойство id для каждого документа имеет ограничение уникальности. Вы можете использовать это ограничение для обеспечения того, чтобы дубликаты документов не были записаны в коллекцию.

+0

Могу ли я каким-то образом предоставить версии для своих документов, чтобы новые версии обновлялись вместо просто * не вставлены *, когда найден существующий документ? –