Канал изменений Azure CosmosDB для сбора документов

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

В случае функции Azure (инициируемой ChangeFeed коллекции документов) эту функцию необходимо подготовить для каждой учетной записи Cosmos db в кластере.

https://docs.microsoft.com/en-us/azure/cosmos-db/change-feed-процессор

https://docs.microsoft.com/en-us/azure/cosmos-db/serverless-computing-database

Как конечная точка API службы может быть активирована библиотекой процессора изменений? Или как служба, работающая на узле кластера, может быть зарегистрирована в качестве наблюдателя для передачи изменений для коллекции документов в нескольких учетных записях Cosmos db в кластере?

Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
2
0
250
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Библиотеку обработчика потока изменений можно использовать в любом консольном/рабочем приложении и запускать на любом хосте, на котором может работать ваше приложение. Примеры доступны в репозитории GitHub https://github.com/Azure/azure-documentdb-changefeedprocessor-dotnet#example.

Ограничение состоит в том, что один наблюдатель может прослушивать одну коллекцию в одном аккаунте. Если у вас несколько учетных записей, каждая коллекция (даже если они имеют одинаковое имя) является отдельной коллекцией и требует отдельного экземпляра работающей библиотеки обработчика канала изменений (коллекции не охватывают несколько учетных записей). Этот экземпляр может находиться в том же вычислительном блоке, что и остальные, и он будет совместно использовать ресурсы (ЦП/ОЗУ) или в независимом.

Не могли бы вы поделиться дополнительной информацией о том, является ли здесь лучшим вариантом лазурная функция с триггером для коллекции или консольное/рабочее приложение, зарегистрированное в качестве наблюдателя для канала изменений, более предпочтительным вариантом?

Vanathi 08.04.2019 22:16

Они оба действительны. Это зависит от уровня абстракции, который вы предпочитаете. С функциями Azure вы платите за количество выполнений (в плане потребления), и масштабирование может быть выполнено за вас, вы не кодируете наблюдателей, поэтому внедрение зависимостей может быть сложнее, но кодирование в целом намного проще. С библиотекой CFP вам нужен воркер, которому вы платите, независимо от количества изменений, у вас больше контроля над внутренним кодом и вы можете настроить масштабирование по своему вкусу, но вы также несете ответственность за поддержку этих воркеров.

Matias Quaranta 09.04.2019 18:17

Я пытаюсь использовать библиотеку CFP с зарегистрированным рабочим и наблюдателем. Моя коллекция аренды обновляется всякий раз, когда в отслеживаемой коллекции происходят изменения. Но метод ProcessChangesAsync не вызывается. Я запускаю рабочую службу локально со своей машины.

Vanathi 09.04.2019 18:22

Убедитесь, что Owner, который появляется в аренде, имеет то же имя, что и имя хоста, которое вы используете в своем воркере. Если нет, это означает, что у вас есть другой запущенный наблюдатель, который прослушивает ту же коллекцию, используя ту же коллекцию аренды. Если вы хотите, чтобы несколько независимых рабочих процессов прослушивали одну и ту же коллекцию и использовали одну и ту же коллекцию аренды, назначьте LeasePrefix для каждой рабочей группы.

Matias Quaranta 09.04.2019 18:25

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

Vanathi 09.04.2019 18:39

Owner = null означает, что никто не получает эту аренду. Ваш рабочий процесс запущен или он запускает процессор (StartAsync) и завершает работу? После StartAsync вы можете заблокировать рабочий процесс и оставить его работающим до тех пор, пока вы не вызовете StopAsync, чтобы завершить его.

Matias Quaranta 09.04.2019 19:00

Если этого работника необходимо развернуть для нескольких учетных записей Cosmos db, как можно вызвать этот closeAsync для каждого экземпляра службы работника?

Vanathi 09.04.2019 20:08

Давайте продолжить обсуждение в чате.

Vanathi 09.04.2019 20:29

Другие вопросы по теме