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 true ayarlandığı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 true kullanı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:
- Kuyruk tetikleyicisi, JSON'dan kimlik arama
- HTTP tetikleyicisi, sorgu dizesinden kimlik arama
- HTTP tetikleyicisi, rota verilerinden kimlik arama
- HTTP tetikleyicisi, SqlQuery kullanarak yol verilerinden kimlik arama
- SQLQuery kullanarak HTTP tetikleyicisi, birden çok belge alma
- DOCUMENTClient kullanarak HTTP tetikleyicisi, birden çok belge alma
Ö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ı ToDoItemLookup
bir 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);
}
}
}
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);
}
}
}
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);
}
}
}
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ı |