首页 > 解决方案 > 无法在 2 个 cosmos 容器之间迁移

问题描述

我正在尝试使用 option 在 2 个容器之间迁移数据StartFromBeginning =true。在迁移时,我还对文档进行了小修改。当我添加这个逻辑时,集合之间的实时同步不起作用。我曾使用将数据从旧容器迁移到新的分区容器,使用更改提要作为参考,这是可行的。部署后似乎没有错误,但是。我怎样才能检查我做错了什么。我还启用了应用程序洞察力。

namespace CosmosContainerMigration.Trigger
{
    public class ContainerMigration
    {
        private IUpdatedDocument updatedDocument;


        public ContainerMigration(IUpdatedDocument updatedDocument)
        {
            this.updatedDocument = updatedDocument;
        }

        [FunctionName("CosmosContainerMigration")]
        public async Task Run([CosmosDBTrigger(
            databaseName: "%SourceDatabaseName%", 
            collectionName: "%ContainerName%",
            ConnectionStringSetting = "connectionString",
            StartFromBeginning =true,
            LeaseCollectionName ="%ContainerLeaseName%",
            CreateLeaseCollectionIfNotExists = true)]IReadOnlyList<Document> source,
            [CosmosDB(databaseName:"%TargetDatabaseName%",
            collectionName:"%ContainerName%",
            ConnectionStringSetting = "connectionString")]IAsyncCollector<Document> destination,
            ILogger log)
        {
            log.LogInformation("Documents modified " + source.Count);

            foreach (var item in source)
            {
                try
                {
                    Document updatedItem = await this.updatedDocument.Update(item);

                    await destination.AddAsync(updatedItem);
                }
                catch (Exception)
                {
                    log.LogInformation("Failed document ", item.Id);
                    throw;
                }
            }
        }
    }
}

标签: azure-cosmosdb

解决方案


推荐阅读