Aracılığıyla paylaş


Azure İşlevleri 1.x için Azure Cosmos DB bağlamaları

Önemli

Azure İşlevleri çalışma zamanının 1.x sürümü için destek 14 Eylül 2026'da sona erecektir. Tam destek için uygulamalarınızı 4.x sürümüne geçirmenizi kesinlikle öneririz.

Bu makalede, Azure İşlevleri'de Azure Cosmos DB bağlamalarıyla çalışma açıklanmaktadır. Azure İşlevleri, Azure Cosmos DB için tetikleyici, giriş ve çıkış bağlamalarını destekler.

Not

Bu makale Azure İşlevleri 1.x içindir. İşlevler 2.x ve üzeri sürümlerde bu bağlamaların nasıl kullanılacağı hakkında bilgi için bkz. Azure İşlevleri 2.x için Azure Cosmos DB bağlamaları.

Bu bağlama ilk olarak DocumentDB olarak adlandırıldı. Azure İşlevleri sürüm 1.x'te yalnızca tetikleyici Azure Cosmos DB olarak yeniden adlandırıldı; giriş bağlaması, çıkış bağlaması ve NuGet paketi DocumentDB adını korur.

Not

Azure Cosmos DB bağlamaları yalnızca SQL API ile kullanım için desteklenir. Diğer tüm Azure Cosmos DB API'leri için, MongoDB için Azure Cosmos DB, Apache Cassandra için Azure Cosmos DB, Apache Gremlin için Azure Cosmos DB ve Tablo için Azure Cosmos DB gibi API'nizin statik istemcisini kullanarak işlevinizden veritabanına erişmeniz gerekir.

Paketler - İşlevler 1.x

İşlevler sürüm 1.x için Azure Cosmos DB bağlamaları Microsoft.Azure.WebJobs.Extensions.DocumentDB NuGet paketi, sürüm 1.x'te sağlanır. Bağlamaların kaynak kodu azure-webjobs-sdk-extensions GitHub deposundadır.

Aşağıdaki tabloda, her geliştirme ortamında çıkış bağlama desteğinin nasıl ekleneceği listeilmektedir.

Geliştirme ortamı İşlevler 1.x'te destek eklemek için
Yerel geliştirme: C# sınıf kitaplığı Paketi yükleme
Yerel geliştirme: C# betiği, JavaScript, F# Otomatik
Portal geliştirme Otomatik

Tetikle

Azure Cosmos DB Tetikleyicisi, bölümler arasında eklemeleri ve güncelleştirmeleri dinlemek için Azure Cosmos DB Değişiklik Akışı'nı kullanır. Değişiklik akışı, silmeleri değil eklemeleri ve güncelleştirmeleri yayımlar.

Tetikleyici - örnek

Aşağıdaki örnekte, belirtilen veritabanı ve koleksiyonda eklemeler veya güncelleştirmeler olduğunda çağrılan işlem içi bir C# işlevi gösterilmektedir.

using Microsoft.Azure.Documents;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Host;
using System.Collections.Generic;

namespace CosmosDBSamplesV1
{
    public static class CosmosTrigger
    {
        [FunctionName("CosmosTrigger")]
        public static void Run([CosmosDBTrigger(
            databaseName: "ToDoItems",
            collectionName: "Items",
            ConnectionStringSetting = "CosmosDBConnection",
            LeaseCollectionName = "leases",
            CreateLeaseCollectionIfNotExists = true)]IReadOnlyList<Document> documents,
            TraceWriter log)
        {
            if (documents != null && documents.Count > 0)
            {
                log.Info($"Documents modified: {documents.Count}");
                log.Info($"First document Id: {documents[0].Id}");
            }
        }
    }
}

Tetikleyici - öznitelikler

İşlem içi C# sınıf kitaplıkları için CosmosDBTrigger özniteliğini kullanın.

Özniteliğin oluşturucusunun veritabanı adı ve koleksiyon adı alır. Bu ayarlar ve yapılandırabileceğiniz diğer özellikler hakkında bilgi için bkz . Tetikleyici - yapılandırma. Yöntem imzasında bir CosmosDBTrigger öznitelik örneği aşağıda verilmişti:

    [FunctionName("DocumentUpdates")]
    public static void Run(
        [CosmosDBTrigger("database", "collection", ConnectionStringSetting = "myCosmosDB")]
    IReadOnlyList<Document> documents,
        TraceWriter log)
    {
        ...
    }

Tam bir örnek için bkz . Tetikleyici - C# örneği.

Tetikleyici - yapılandırma

Aşağıdaki tabloda, function.json dosyasında ve CosmosDBTrigger özniteliğinde ayarladığınız bağlama yapılandırma özellikleri açıklanmaktadır.

function.json özelliği Öznitelik özelliği Açıklama
type yok olarak ayarlanmalıdır cosmosDBTrigger.
direction yok olarak ayarlanmalıdır in. Bu parametre, Tetikleyiciyi Azure portalında oluşturduğunuzda otomatik olarak ayarlanır.
ad yok Değişiklikleri olan belgelerin listesini temsil eden işlev kodunda kullanılan değişken adı.
connectionStringSetting ConnectionStringSetting İzlenen Azure Cosmos DB hesabına bağlanmak için kullanılan bağlantı dizesi içeren bir uygulama ayarının adı.
databaseName DatabaseName Koleksiyonun izlendiği Azure Cosmos DB veritabanının adı.
collectionName CollectionName İzlenen koleksiyonun adı.
leaseConnectionStringSetting LeaseConnectionStringSetting (İsteğe bağlı) Kira koleksiyonunu barındıran hizmete bağlantı dizesi içeren bir uygulama ayarının adı. Ayarlanmadığında connectionStringSetting , değer kullanılır. Bu parametre, portalda bağlama oluşturulduğunda otomatik olarak ayarlanır. Kira koleksiyonu için bağlantı dizesi yazma izinlerine sahip olmalıdır.
leaseDatabaseName LeaseDatabaseName (İsteğe bağlı) Kiraları depolamak için kullanılan koleksiyonu tutan veritabanının adı. Ayarlanmadığında, ayarın databaseName değeri kullanılır. Bu parametre, portalda bağlama oluşturulduğunda otomatik olarak ayarlanır.
leaseCollectionName LeaseCollectionName (İsteğe bağlı) Kiraları depolamak için kullanılan koleksiyonun adı. Ayarlanmadığında, değer leases kullanılır.
createLeaseCollectionIfNotExists CreateLeaseCollectionIfNotExists (İsteğe bağlı) olarak trueayarlandığında, kira koleksiyonu henüz mevcut olmadığında otomatik olarak oluşturulur. Varsayılan değer şudur: false.
leasesCollectionThroughput LeasesCollectionThroughput (İsteğe bağlı) Kira koleksiyonu oluşturulduğunda atanacak İstek Birimi miktarını tanımlar. Bu ayar yalnızca olarak createLeaseCollectionIfNotExists ayarlandığında truekullanılır. Bağlama portal kullanılarak oluşturulduğunda bu parametre otomatik olarak ayarlanır.
leaseCollectionPrefix LeaseCollectionPrefix (İsteğe bağlı) Ayarlandığında, bu İşlev için Kira koleksiyonunda oluşturulan kiralara bir ön ek ekler ve etkili bir şekilde iki ayrı Azure İşlevleri farklı ön ekleri kullanarak aynı Kira koleksiyonunu paylaşmasına izin verir.
feedPollDelay FeedPollDelay (İsteğe bağlı) Ayarlandığında, tüm geçerli değişiklikler boşaltıldıktan sonra akıştaki yeni değişiklikler için bir bölümü yoklama arasındaki gecikmeyi milisaniye cinsinden tanımlar. Varsayılan değer 5000 'dir (5 saniye).
leaseAcquireInterval LeaseAcquireInterval (İsteğe bağlı) Ayarlandığında, bölümlerin bilinen konak örnekleri arasında eşit olarak dağıtılıp dağıtılamadığını hesaplamak için bir görevi başlatma aralığını milisaniye cinsinden tanımlar. Varsayılan değer 13000 'dir (13 saniye).
leaseExpirationInterval LeaseExpirationInterval (İsteğe bağlı) Ayarlandığında, bölümü temsil eden bir kirada kiranın alındığı aralığı milisaniye cinsinden tanımlar. Kira bu aralık içinde yenilenmezse süresi dolmasına neden olur ve bölümün sahipliği başka bir örneğe taşınır. Varsayılan değer 60000 'dir (60 saniye).
leaseRenewInterval LeaseRenewInterval (İsteğe bağlı) Ayarlandığında, o anda bir örnek tarafından tutulan bölümler için tüm kiralamalar için yenileme aralığını milisaniye cinsinden tanımlar. Varsayılan değer 17000 'dir (17 saniye).
checkpointFrequency CheckpointFrequency (İsteğe bağlı) Ayarlandığında, kira denetim noktaları arasındaki aralığı milisaniye cinsinden tanımlar. Varsayılan değer her zaman her İşlev çağrısının ardındandır.
maxItemsPerInvocation MaxItemsPerInvocation (İsteğe bağlı) Ayarlandığında, İşlev çağrısı başına alınan en fazla öğe miktarını özelleştirir.
startFromBeginning StartFromBeginning (İsteğe bağlı) Ayarlandığında Tetikleyiciye geçerli saat yerine koleksiyon geçmişinin başından itibaren değişiklikleri okumaya başlamasını söyler. Bu yalnızca tetikleyici ilk kez başlatıldığında çalışır; sonraki çalıştırmalarda olduğu gibi denetim noktaları zaten depolanır. true Bu ayarın zaten oluşturulmuş kiralar olduğunda olarak ayarlanmasının hiçbir etkisi yoktur.

Yerel olarak geliştirme yaparken uygulama ayarlarınızı koleksiyondaki local.settings.json dosyasına Values ekleyin.

Tetikleyici - kullanım

Tetikleyici, bölümler üzerinde kiraları depolamak için kullandığı ikinci bir koleksiyon gerektirir. Tetikleyicinin çalışması için hem izlenen koleksiyonun hem de kiraları içeren koleksiyonun kullanılabilir olması gerekir.

Önemli

Birden çok işlev aynı koleksiyon için Azure Cosmos DB tetikleyicisi kullanacak şekilde yapılandırılmışsa, işlevlerin her biri ayrılmış bir kira koleksiyonu kullanmalı veya her işlev için farklı LeaseCollectionPrefix bir değer belirtmelidir. Aksi takdirde, işlevlerden yalnızca biri tetiklenir. Ön ek hakkında bilgi için Yapılandırma bölümüne bakın.

Tetikleyici, belgenin güncelleştirildiğini veya eklendiğini göstermez, yalnızca belgenin kendisini sağlar. Güncelleştirmeleri ve eklemeleri farklı şekilde işlemeniz gerekiyorsa, ekleme veya güncelleştirme için zaman damgası alanları uygulayarak bunu yapabilirsiniz.

Giriş

Azure Cosmos DB giriş bağlaması SQL API'sini kullanarak bir veya daha fazla Azure Cosmos DB belgesini getirir ve işlevin giriş parametresine iletir. Belge kimliği veya sorgu parametreleri, işlevi çağıran tetikleyiciye göre belirlenebilir.

Giriş - örnek

Bu bölüm aşağıdaki örnekleri içerir:

Örnekler basit ToDoItem bir türe başvurur:

namespace CosmosDBSamplesV1
{
    public class ToDoItem
    {
        public string Id { get; set; }
        public string Description { get; set; }
    }
}

Kuyruk tetikleyicisi, JSON'dan kimlik arama

Aşağıdaki örnekte, tek bir belgeyi alan bir C# işlevi gösterilmektedir. İşlev, JSON nesnesi içeren bir kuyruk iletisi tarafından tetikleniyor. Kuyruk tetikleyicisi, JSON'ı aramak için gereken kimliği içeren adlı ToDoItemLookupbir nesneye ayrıştırıyor. Bu kimlik, belirtilen veritabanından ve koleksiyondan belge ToDoItem almak için kullanılır.

namespace CosmosDBSamplesV1
{
    public class ToDoItemLookup
    {
        public string ToDoItemId { get; set; }
    }
}
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Host;

namespace CosmosDBSamplesV1
{
    public static class DocByIdFromJSON
    {
        [FunctionName("DocByIdFromJSON")]
        public static void Run(
            [QueueTrigger("todoqueueforlookup")] ToDoItemLookup toDoItemLookup,
            [DocumentDB(
                databaseName: "ToDoItems",
                collectionName: "Items",
                ConnectionStringSetting = "CosmosDBConnection",
                Id = "{ToDoItemId}")]ToDoItem toDoItem,
            TraceWriter log)
        {
            log.Info($"C# Queue trigger function processed Id={toDoItemLookup?.ToDoItemId}");

            if (toDoItem == null)
            {
                log.Info($"ToDo item not found");
            }
            else
            {
                log.Info($"Found ToDo item, Description={toDoItem.Description}");
            }
        }
    }
}

HTTP tetikleyicisi, sorgu dizesinden kimlik arama

Aşağıdaki örnekte, tek bir belgeyi alan bir C# işlevi gösterilmektedir. İşlev, bir sorgu dizesi kullanarak aranacak kimliği belirten bir HTTP isteği tarafından tetiklenir. Bu kimlik, belirtilen veritabanından ve koleksiyondan belge ToDoItem almak için kullanılır.

using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.Azure.WebJobs.Host;
using System.Net;
using System.Net.Http;

namespace CosmosDBSamplesV1
{
    public static class DocByIdFromQueryString
    {
        [FunctionName("DocByIdFromQueryString")]
        public static HttpResponseMessage Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)]HttpRequestMessage req,
            [DocumentDB(
                databaseName: "ToDoItems",
                collectionName: "Items",
                ConnectionStringSetting = "CosmosDBConnection",
                Id = "{Query.id}")] ToDoItem toDoItem,
            TraceWriter log)
        {
            log.Info("C# HTTP trigger function processed a request.");
            if (toDoItem == null)
            {
                log.Info($"ToDo item not found");
            }
            else
            {
                log.Info($"Found ToDo item, Description={toDoItem.Description}");
            }
            return req.CreateResponse(HttpStatusCode.OK);
        }
    }
}

HTTP tetikleyicisi, rota verilerinden kimlik arama

Aşağıdaki örnekte, tek bir belgeyi alan bir C# işlevi gösterilmektedir. İşlev, arama kimliğini belirtmek için yol verilerini kullanan bir HTTP isteği tarafından tetikleniyor. Bu kimlik, belirtilen veritabanından ve koleksiyondan belge ToDoItem almak için kullanılır.

using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.Azure.WebJobs.Host;
using System.Net;
using System.Net.Http;

namespace CosmosDBSamplesV1
{
    public static class DocByIdFromRouteData
    {
        [FunctionName("DocByIdFromRouteData")]
        public static HttpResponseMessage Run(
            [HttpTrigger(
                AuthorizationLevel.Anonymous, "get", "post",
                Route = "todoitems/{id}")]HttpRequestMessage req,
            [DocumentDB(
                databaseName: "ToDoItems",
                collectionName: "Items",
                ConnectionStringSetting = "CosmosDBConnection",
                Id = "{id}")] ToDoItem toDoItem,
            TraceWriter log)
        {
            log.Info("C# HTTP trigger function processed a request.");

            if (toDoItem == null)
            {
                log.Info($"ToDo item not found");
            }
            else
            {
                log.Info($"Found ToDo item, Description={toDoItem.Description}");
            }
            return req.CreateResponse(HttpStatusCode.OK);
        }
    }
}

Giriş örneklerini atlama

HTTP tetikleyicisi, SqlQuery kullanarak yol verilerinden kimlik arama

Aşağıdaki örnekte, tek bir belgeyi alan bir C# işlevi gösterilmektedir. İşlev, arama kimliğini belirtmek için yol verilerini kullanan bir HTTP isteği tarafından tetikleniyor. Bu kimlik, belirtilen veritabanından ve koleksiyondan belge ToDoItem almak için kullanılır.

using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.Azure.WebJobs.Host;
using System.Collections.Generic;
using System.Net;
using System.Net.Http;

namespace CosmosDBSamplesV1
{
    public static class DocByIdFromRouteDataUsingSqlQuery
    {
        [FunctionName("DocByIdFromRouteDataUsingSqlQuery")]
        public static HttpResponseMessage Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post",
                Route = "todoitems2/{id}")]HttpRequestMessage req,
            [DocumentDB(
                databaseName: "ToDoItems",
                collectionName: "Items",
                ConnectionStringSetting = "CosmosDBConnection",
                SqlQuery = "select * from ToDoItems r where r.id = {id}")] IEnumerable<ToDoItem> toDoItems,
            TraceWriter log)
        {
            log.Info("C# HTTP trigger function processed a request.");
            foreach (ToDoItem toDoItem in toDoItems)
            {
                log.Info(toDoItem.Description);
            }
            return req.CreateResponse(HttpStatusCode.OK);
        }
    }
}

Giriş örneklerini atlama

SQLQuery kullanarak HTTP tetikleyicisi, birden çok belge alma

Aşağıdaki örnekte belgelerin listesini alan bir C# işlevi gösterilmektedir. İşlev bir HTTP isteği tarafından tetikleniyor. Sorgu öznitelik özelliğinde SqlQuery belirtilir.

using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.Azure.WebJobs.Host;
using System.Collections.Generic;
using System.Net;
using System.Net.Http;

namespace CosmosDBSamplesV1
{
    public static class DocsBySqlQuery
    {
        [FunctionName("DocsBySqlQuery")]
        public static HttpResponseMessage Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)]
                HttpRequestMessage req,
            [DocumentDB(
                databaseName: "ToDoItems",
                collectionName: "Items",
                ConnectionStringSetting = "CosmosDBConnection",
                SqlQuery = "SELECT top 2 * FROM c order by c._ts desc")]
                IEnumerable<ToDoItem> toDoItems,
            TraceWriter log)
        {
            log.Info("C# HTTP trigger function processed a request.");
            foreach (ToDoItem toDoItem in toDoItems)
            {
                log.Info(toDoItem.Description);
            }
            return req.CreateResponse(HttpStatusCode.OK);
        }
    }
}

Giriş örneklerini atlama

HTTP tetikleyicisi, DocumentClient kullanarak birden çok belge alma (C#)

Aşağıdaki örnekte belgelerin listesini alan bir C# işlevi gösterilmektedir. İşlev bir HTTP isteği tarafından tetikleniyor. Kod, belge listesini okumak için Azure Cosmos DB bağlaması tarafından sağlanan bir örneği kullanır DocumentClient . Örnek DocumentClient , yazma işlemleri için de kullanılabilir.

using Microsoft.Azure.Documents.Client;
using Microsoft.Azure.Documents.Linq;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.Azure.WebJobs.Host;
using System;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Threading.Tasks;

namespace CosmosDBSamplesV1
{
    public static class DocsByUsingDocumentClient
    {
        [FunctionName("DocsByUsingDocumentClient")]
        public static async Task<HttpResponseMessage> Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)]HttpRequestMessage req,
            [DocumentDB(
                databaseName: "ToDoItems",
                collectionName: "Items",
                ConnectionStringSetting = "CosmosDBConnection")] DocumentClient client,
            TraceWriter log)
        {
            log.Info("C# HTTP trigger function processed a request.");

            Uri collectionUri = UriFactory.CreateDocumentCollectionUri("ToDoItems", "Items");
            string searchterm = req.GetQueryNameValuePairs()
                .FirstOrDefault(q => string.Compare(q.Key, "searchterm", true) == 0)
                .Value;

            if (searchterm == null)
            {
                return req.CreateResponse(HttpStatusCode.NotFound);
            }

            log.Info($"Searching for word: {searchterm} using Uri: {collectionUri.ToString()}");
            IDocumentQuery<ToDoItem> query = client.CreateDocumentQuery<ToDoItem>(collectionUri)
                .Where(p => p.Description.Contains(searchterm))
                .AsDocumentQuery();

            while (query.HasMoreResults)
            {
                foreach (ToDoItem result in await query.ExecuteNextAsync())
                {
                    log.Info(result.Description);
                }
            }
            return req.CreateResponse(HttpStatusCode.OK);
        }
    }
}

Giriş - öznitelikler

İşlem içi C# sınıf kitaplıklarında DocumentDB özniteliğini kullanın.

Özniteliğin oluşturucusunun veritabanı adı ve koleksiyon adı alır. Bu ayarlar ve yapılandırabileceğiniz diğer özellikler hakkında bilgi için aşağıdaki yapılandırma bölümüne bakın.

Giriş - yapılandırma

Aşağıdaki tabloda, function.json dosyasında ve DocumentDB özniteliğinde ayarladığınız bağlama yapılandırma özellikleri açıklanmaktadır.

function.json özelliği Öznitelik özelliği Açıklama
type yok olarak ayarlanmalıdır documentdb.
direction yok olarak ayarlanmalıdır in.
ad yok İşlevdeki belgeyi temsil eden bağlama parametresinin adı.
databaseName DatabaseName Belgeyi içeren veritabanı.
collectionName CollectionName Belgeyi içeren koleksiyonun adı.
id Kimlik Alınacak belgenin kimliği. Bu özellik bağlama ifadelerini destekler. Hem id hem de sqlQuery özelliklerini ayarlamayın. Herhangi birini ayarlamazsanız, koleksiyonun tamamı alınır.
sqlQuery SqlQuery Birden çok belgeyi almak için kullanılan bir Azure Cosmos DB SQL sorgusu. özelliği, şu örnekte olduğu gibi çalışma zamanı bağlamalarını destekler: SELECT * FROM c where c.departmentId = {departmentId}. Hem id hem de sqlQuery özelliklerini ayarlamayın. Herhangi birini ayarlamazsanız, koleksiyonun tamamı alınır.
bağlantı ConnectionStringSetting Azure Cosmos DB bağlantı dizesi içeren uygulama ayarının adı.
partitionKey PartitionKey Arama için bölüm anahtarı değerini belirtir. Bağlama parametreleri içerebilir.

Yerel olarak geliştirme yaparken uygulama ayarlarınızı koleksiyondaki local.settings.json dosyasına Values ekleyin.

Giriş - kullanım

İşlev başarıyla çıktığında, adlandırılmış giriş parametreleri aracılığıyla giriş belgesinde yapılan tüm değişiklikler otomatik olarak kalıcı hale getirilir.

Çıktı

Azure Cosmos DB çıkış bağlaması, SQL API'sini kullanarak Azure Cosmos DB veritabanına yeni bir belge yazmanızı sağlar.

Çıkış - örnek

Bu bölüm aşağıdaki örnekleri içerir:

  • Kuyruk tetikleyicisi, bir belge yazma
  • Kuyruk tetikleyicisi, kullanarak belge yazma IAsyncCollector

Örnekler basit ToDoItem bir türe başvurur:

namespace CosmosDBSamplesV1
{
    public class ToDoItem
    {
        public string Id { get; set; }
        public string Description { get; set; }
    }
}

Kuyruk tetikleyicisi, bir belge yazma

Aşağıdaki örnekte, Kuyruk depolamadan iletide sağlanan verileri kullanarak veritabanına belge ekleyen bir C# işlevi gösterilmektedir.

using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Host;
using System;

namespace CosmosDBSamplesV1
{
    public static class WriteOneDoc
    {
        [FunctionName("WriteOneDoc")]
        public static void Run(
            [QueueTrigger("todoqueueforwrite")] string queueMessage,
            [DocumentDB(
                databaseName: "ToDoItems",
                collectionName: "Items",
                ConnectionStringSetting = "CosmosDBConnection")]out dynamic document,
            TraceWriter log)
        {
            document = new { Description = queueMessage, id = Guid.NewGuid() };

            log.Info($"C# Queue trigger function inserted one row");
            log.Info($"Description={queueMessage}");
        }
    }
}

Kuyruk tetikleyicisi, IAsyncCollector kullanarak belge yazma

Aşağıdaki örnekte, bir kuyruk iletisi JSON'unda sağlanan verileri kullanarak veritabanına belge koleksiyonu ekleyen bir C# işlevi gösterilmektedir.

using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Host;
using System.Threading.Tasks;

namespace CosmosDBSamplesV1
{
    public static class WriteDocsIAsyncCollector
    {
        [FunctionName("WriteDocsIAsyncCollector")]
        public static async Task Run(
            [QueueTrigger("todoqueueforwritemulti")] ToDoItem[] toDoItemsIn,
            [DocumentDB(
                databaseName: "ToDoItems",
                collectionName: "Items",
                ConnectionStringSetting = "CosmosDBConnection")]
                IAsyncCollector<ToDoItem> toDoItemsOut,
            TraceWriter log)
        {
            log.Info($"C# Queue trigger function processed {toDoItemsIn?.Length} items");

            foreach (ToDoItem toDoItem in toDoItemsIn)
            {
                log.Info($"Description={toDoItem.Description}");
                await toDoItemsOut.AddAsync(toDoItem);
            }
        }
    }
}

Çıkış - öznitelikler

İşlem içi C# sınıf kitaplıklarında DocumentDB özniteliğini kullanın.

Özniteliğin oluşturucusunun veritabanı adı ve koleksiyon adı alır. Bu ayarlar ve yapılandırabileceğiniz diğer özellikler hakkında bilgi için bkz . Çıkış - yapılandırma. Yöntem imzasında bir DocumentDB öznitelik örneği aşağıda verilmişti:

    [FunctionName("QueueToDocDB")]
    public static void Run(
        [QueueTrigger("myqueue-items", Connection = "AzureWebJobsStorage")] string myQueueItem,
        [DocumentDB("ToDoList", "Items", Id = "id", ConnectionStringSetting = "myCosmosDB")] out dynamic document)
    {
        ...
    }

Tam bir örnek için bkz . Çıkış.

Çıkış - yapılandırma

Aşağıdaki tabloda, function.json dosyasında ve DocumentDB özniteliğinde ayarladığınız bağlama yapılandırma özellikleri açıklanmaktadır.

function.json özelliği Öznitelik özelliği Açıklama
type yok olarak ayarlanmalıdır documentdb.
direction yok olarak ayarlanmalıdır out.
ad yok İşlevdeki belgeyi temsil eden bağlama parametresinin adı.
databaseName DatabaseName Belgenin oluşturulduğu koleksiyonu içeren veritabanı.
collectionName CollectionName Belgenin oluşturulduğu koleksiyonun adı.
createIfNotExists CreateIfNotExists Koleksiyonun mevcut olmadığında oluşturulup oluşturulmadığını gösteren boole değeri. Varsayılan değer false'tur çünkü yeni koleksiyonlar ayrılmış aktarım hızıyla oluşturulur ve bu da maliyeti etkiler. Daha fazla bilgi için bkz. fiyatlandırma sayfası.
partitionKey PartitionKey True CreateIfNotExists olduğunda, oluşturulan koleksiyon için bölüm anahtarı yolunu tanımlar.
collectionThroughput CollectionThroughput True CreateIfNotExists olduğunda, oluşturulan koleksiyonun aktarım hızını tanımlar.
bağlantı ConnectionStringSetting Azure Cosmos DB bağlantı dizesi içeren uygulama ayarının adı.

Yerel olarak geliştirme yaparken uygulama ayarlarınızı koleksiyondaki local.settings.json dosyasına Values ekleyin.

Çıkış - kullanım

Varsayılan olarak, işlevinizdeki çıkış parametresine yazdığınızda veritabanınızda bir belge oluşturulur. Bu belgede, belge kimliği olarak otomatik olarak oluşturulmuş bir GUID var. Çıkış parametresine geçirilen JSON nesnesinde özelliğini belirterek id çıktı belgesinin belge kimliğini belirtebilirsiniz.

Not

Var olan bir belgenin kimliğini belirttiğinizde, yeni çıktı belgesi bu belgenin üzerine yazılır.

Özel durumlar ve dönüş kodları

Bağlama Başvuru
Azure Cosmos DB Azure Cosmos DB için HTTP durum kodları

Sonraki adımlar