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'da Azure Cosmos DB bağlamalarıyla çalışma adımları 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 de dahil olmak üzere 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 bu bağlama için nasıl destek ekleneceği açıklanır.
Geliştirme ortamı | 'da destek eklemek için İşlevler 1.x |
---|---|
Yerel geliştirme - C# sınıf kitaplığı | Paketi yükleme |
Yerel geliştirme - C# betiği, JavaScript, F# | Automatic |
Portal geliştirme | Automatic |
Tetikleyici
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. Yapılandırabileceğiniz ayarlar ve 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ştir:
[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 ayarladığınız bağlama yapılandırma özellikleri ve CosmosDBTrigger
özniteliği açıklanmaktadır.
function.json özelliği | Öznitelik özelliği | Description |
---|---|---|
Türü | yok | olarak ayarlanmalıdır cosmosDBTrigger . |
Yön | yok | olarak ayarlanmalıdır in . Bu parametre, tetikleyiciyi Azure portal 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ı dizesini içeren uygulama ayarının adı. |
veritabanıAdı | Databasename | Koleksiyonun izlendiği Azure Cosmos DB veritabanının adı. |
Toplamaadı | Toplamaadı | İzlenen koleksiyonun adı. |
leaseConnectionStringSetting | LeaseConnectionStringSetting | (İsteğe bağlı) Kira koleksiyonunu tutan hizmete yönelik bağlantı dizesini 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. false varsayılan değerdir. |
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 ekler 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 bir bölümü akıştaki yeni değişiklikler için 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, 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 değişiklikleri geçerli saat yerine koleksiyon geçmişinin başından itibaren okumaya başlamasını bildirir. 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 önceden oluşturulmuş kiralar olduğunda olarak ayarlanmasının hiçbir etkisi yoktur. |
Yerel olarak geliştirirken uygulama ayarlarınızı koleksiyondaki local.settings.json dosyasınaValues
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 koleksiyon hem de kiraları içeren koleksiyon kullanılabilir olmalıdır.
Önemli
Aynı koleksiyon için bir Azure Cosmos DB tetikleyicisi kullanmak üzere birden çok işlev yapılandırıldıysa, işlevlerin her biri ayrılmış bir kira koleksiyonu kullanmalıdır 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ümde aşağıdaki örnekler yer alır:
- Kuyruk tetikleyicisi, JSON'dan arama kimliği
- 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 arama kimliği
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'u, arama kimliğini 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);
}
}
}
DOCUMENTClient kullanarak HTTP tetikleyicisi, 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ındaDocumentDB ö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 ayarladığınız bağlama yapılandırma özellikleri ve DocumentDB
özniteliği açıklanmaktadır.
function.json özelliği | Öznitelik özelliği | Description |
---|---|---|
Türü | yok | olarak ayarlanmalıdır documentdb . |
Yön | yok | olarak ayarlanmalıdır in . |
Adı | yok | İşlevdeki belgeyi temsil eden bağlama parametresinin adı. |
veritabanıAdı | Databasename | Belgeyi içeren veritabanı. |
Toplamaadı | Toplamaadı | Belgeyi içeren koleksiyonun adı. |
id | Kimliği | Alınacak belgenin kimliği. Bu özellik bağlama ifadelerini destekler. Hem id hem de sqlQuery özelliklerini ayarlamayın. Bunlardan 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. Bunlardan birini ayarlamazsanız koleksiyonun tamamı alınır. |
bağlantı | ConnectionStringSetting | Azure Cosmos DB bağlantı dizenizi 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ınaValues
ekleyin.
Giriş - kullanım
İşlevden başarıyla çıkıldığı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ındaDocumentDB ö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. Aşağıda yöntem imzasında bir DocumentDB
öznitelik örneği 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 ayarladığınız bağlama yapılandırma özellikleri ve DocumentDB
özniteliği açıklanmaktadır.
function.json özelliği | Öznitelik özelliği | Description |
---|---|---|
Türü | yok | olarak ayarlanmalıdır documentdb . |
Yön | yok | olarak ayarlanmalıdır out . |
Adı | yok | İşlevdeki belgeyi temsil eden bağlama parametresinin adı. |
veritabanıAdı | Databasename | Belgenin oluşturulduğu koleksiyonu içeren veritabanı. |
Toplamaadı | Toplamaadı | Belgenin oluşturulduğu koleksiyonun adı. |
createIfNotExists | CreateIfNotExists | Koleksiyonun mevcut olmadığında oluşturulup oluşturulmadığını belirten 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 edinmek 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ı dizenizi içeren uygulama ayarının adı. |
Yerel olarak geliştirme yaparken uygulama ayarlarınızı koleksiyondaki local.settings.json dosyasınaValues
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şturulan bir GUID var. Çıkış parametresine geçirilen JSON nesnesinde özelliğini belirterek id
çıktı belgesinin belge kimliğini belirtebilirsiniz.
Not
Varolan 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ı |