Azure Cosmos DB-kötések Azure Functions 1.x-hez
Fontos
A Azure Functions futtatókörnyezet 1.x-es verziójának támogatása 2026. szeptember 14-én megszűnik. Javasoljuk, hogy a teljes támogatás érdekében migrálja az alkalmazásokat a 4.x verzióra .
Ez a cikk azt ismerteti, hogyan használható az Azure Cosmos DB-kötések Azure Functions. Azure Functions támogatja az Azure Cosmos DB trigger-, bemeneti és kimeneti kötéseit.
Megjegyzés
Ez a cikk Azure Functions 1.x. A kötések a Functions 2.x és újabb verzióiban való használatáról az Azure Cosmos DB-kötések Azure Functions 2.x-hez című témakörben olvashat.
Ezt a kötést eredetileg DocumentDB-nek hívták. Az 1.x verzió Azure Functions csak az eseményindítót nevezték át Azure Cosmos DB-nek; a bemeneti kötés, a kimeneti kötés és a NuGet-csomag megőrzi a DocumentDB nevét.
Megjegyzés
Az Azure Cosmos DB-kötések csak az SQL API-val használhatók. Az összes többi Azure Cosmos DB API-hoz az API statikus ügyfélalkalmazásával kell elérnie az adatbázist a függvényből, beleértve az Azure Cosmos DB for MongoDB-t, az Apache Cassandra-hoz készült Azure Cosmos DB-t, az Apache Gremlinhez készült Azure Cosmos DB-t és a Table-hez készült Azure Cosmos DB-t.
Csomagok – Functions 1.x
A Functions 1.x-es verziójához készült Azure Cosmos DB-kötések a Microsoft.Azure.WebJobs.Extensions.DocumentDB NuGet csomag 1.x-es verziójában érhetők el. A kötések forráskódja az azure-webjobs-sdk-extensions GitHub-adattárban található.
Az alábbi táblázat bemutatja, hogyan adhat hozzá támogatást ehhez a kötéshez az egyes fejlesztési környezetekben.
Fejlesztési környezet | Támogatás hozzáadása a következőben: Functions 1.x |
---|---|
Helyi fejlesztés – C# osztálykódtár | A csomag telepítése |
Helyi fejlesztés – C#-szkript, JavaScript, F# | Automatikus |
Portál fejlesztése | Automatikus |
Eseményindító
Az Azure Cosmos DB-eseményindító az Azure Cosmos DB változáscsatornával figyeli a beszúrásokat és frissítéseket a partíciók között. A változáscsatorna a beszúrásokat és frissítéseket teszi közzé, nem a törléseket.
Trigger – példa
Az alábbi példa egy folyamatban lévő C# függvényt mutat be, amely akkor lesz meghívva, ha a megadott adatbázisban és gyűjteményben vannak beszúrások vagy frissítések.
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}");
}
}
}
}
Trigger – attribútumok
A folyamatban lévő C# osztálykódtárakhoz használja a CosmosDBTrigger attribútumot.
Az attribútum konstruktora az adatbázis nevét és a gyűjtemény nevét veszi fel. Ezekről a beállításokról és a konfigurálható egyéb tulajdonságokról az Eseményindító – konfiguráció című témakörben olvashat bővebben. Íme egy CosmosDBTrigger
attribútum példa egy metódus-aláírásban:
[FunctionName("DocumentUpdates")]
public static void Run(
[CosmosDBTrigger("database", "collection", ConnectionStringSetting = "myCosmosDB")]
IReadOnlyList<Document> documents,
TraceWriter log)
{
...
}
Teljes példáért lásd: Trigger – C# példa.
Trigger – konfiguráció
Az alábbi táblázat a function.json fájlban és CosmosDBTrigger
az attribútumban beállított kötéskonfigurációs tulajdonságokat ismerteti.
function.json tulajdonság | Attribútumtulajdonság | Description |
---|---|---|
Típus | n.a. | A értéket a következő értékre kell állítani: cosmosDBTrigger . |
Irányba | n.a. | A értéket a következő értékre kell állítani: in . Ez a paraméter automatikusan be van állítva, amikor létrehozza az eseményindítót a Azure Portal. |
név | n.a. | A függvénykódban használt változónév, amely a módosításokkal rendelkező dokumentumok listáját jelöli. |
connectionStringSetting | ConnectionStringSetting | A figyelt Azure Cosmos DB-fiókhoz való csatlakozáshoz használt kapcsolati sztring tartalmazó alkalmazásbeállítás neve. |
databaseName | DatabaseName | Az Azure Cosmos DB-adatbázis neve a gyűjtemény monitorozásával. |
Lekérdezés_neve | Lekérdezés_neve | A figyelt gyűjtemény neve. |
leaseConnectionStringSetting | LeaseConnectionStringSetting | (Nem kötelező) A bérletgyűjteményt tároló szolgáltatás kapcsolati sztring tartalmazó alkalmazásbeállítás neve. Ha nincs beállítva, a rendszer az connectionStringSetting értéket használja. Ez a paraméter automatikusan be lesz állítva, amikor a kötés létrejön a portálon. A bérletgyűjtemény kapcsolati sztring írási engedélyekkel kell rendelkeznie. |
leaseDatabaseName | LeaseDatabaseName | (Nem kötelező) A bérletek tárolásához használt gyűjteményt tároló adatbázis neve. Ha nincs beállítva, a rendszer a databaseName beállítás értékét használja. Ez a paraméter automatikusan be lesz állítva, amikor a kötés létrejön a portálon. |
leaseCollectionName | LeaseCollectionName | (Nem kötelező) A bérletek tárolására használt gyűjtemény neve. Ha nincs beállítva, a rendszer az értéket leases használja. |
createLeaseCollectionIfNotExists | CreateLeaseCollectionIfNotExists | (Nem kötelező) Ha a értékre true van állítva, a rendszer automatikusan létrehozza a bérletgyűjteményt, ha még nem létezik. Az alapértelmezett érték false . |
leasesCollectionThroughput | LeasesCollectionThroughput | (Nem kötelező) Meghatározza a bérletgyűjtemény létrehozásakor hozzárendelendő kérelemegységek mennyiségét. Ez a beállítás csak akkor használatos, ha createLeaseCollectionIfNotExists a értéke true . Ez a paraméter automatikusan be lesz állítva, amikor a kötés a portál használatával jön létre. |
leaseCollectionPrefix | LeaseCollectionPrefix | (Nem kötelező) Ha be van állítva, hozzáad egy előtagot a függvény bérletgyűjteményében létrehozott bérletekhez, így két külön Azure Functions oszthatja meg ugyanazt a bérletgyűjteményt különböző előtagok használatával. |
feedPollDelay | FeedPollDelay | (Nem kötelező) Ha be van állítva, ezredmásodpercben határozza meg a partíciók lekérdezése közötti késleltetést a hírcsatorna új módosításainak lekérdezése között, miután az összes aktuális módosítás el lesz ürítve. Az alapértelmezett érték 5000 (5 másodperc). |
leaseAcquireInterval | LeaseAcquireInterval | (Nem kötelező) Ha be van állítva, ezredmásodpercben határozza meg azt az időközt, amely alapján kiszámíthatja, hogy a partíciók egyenletesen oszlanak-e el az ismert gazdagéppéldányok között. Az alapértelmezett érték 13000 (13 másodperc). |
leaseExpirationInterval | LeaseExpirationInterval | (Nem kötelező) Ha be van állítva, ezredmásodpercben határozza meg azt az időközt, amelyre vonatkozóan a bérlet egy partíciót képviselő bérletre kerül. Ha a bérlet nem újul meg ebben az intervallumban, az lejár, és a partíció tulajdonjoga egy másik példányra kerül. Az alapértelmezett érték 60000 (60 másodperc). |
leaseRenewInterval | LeaseRenewInterval | (Nem kötelező) Ha be van állítva, ezredmásodpercben határozza meg a példány által jelenleg tárolt partíciók összes bérletének megújítási időközét. Az alapértelmezett érték 17000 (17 másodperc). |
checkpointFrequency | CheckpointFrequency | (Nem kötelező) Ha be van állítva, ezredmásodpercben határozza meg a bérletellenőrzési pontok közötti időközt. Az alapértelmezett érték mindig az egyes függvényhívások után van. |
maxItemsPerInvocation | MaxItemsPerInvocation | (Nem kötelező) Ha be van állítva, testre szabja a függvényhívásonként fogadott elemek maximális számát. |
startFromBeginning | StartFromBeginning | (Nem kötelező) Ha be van állítva, az eseményindító az aktuális idő helyett a gyűjtemény előzményeinek elejétől kezdve kezdi el a módosítások olvasását. Ez csak az eseményindító első indításakor működik, mivel a későbbi futtatásokban az ellenőrzőpontok már vannak tárolva. true A már létrehozott bérletek beállításának nincs hatása. |
Helyi fejlesztéskor adja hozzá az alkalmazásbeállításokat a gyűjtemény local.settings.json fájljáhozValues
.
Trigger – használat
Az eseményindítóhoz egy második gyűjteményre van szükség, amelyet a partíciók bérleteinek tárolására használ. A figyelt gyűjteménynek és a bérleteket tartalmazó gyűjteménynek is rendelkezésre kell állnia ahhoz, hogy az eseményindító működjön.
Fontos
Ha több függvény van konfigurálva arra, hogy egy Azure Cosmos DB-eseményindítót használjon ugyanahhoz a gyűjteményhez, mindegyik függvénynek dedikált bérletgyűjteményt kell használnia, vagy minden egyes függvényhez másikat LeaseCollectionPrefix
kell megadnia. Ellenkező esetben a rendszer csak az egyik függvényt aktiválja. Az előtaggal kapcsolatos információkért lásd a Konfiguráció szakaszt.
Az eseményindító nem jelzi, hogy egy dokumentumot frissítettek vagy szúrtak be, csak magát a dokumentumot biztosítja. Ha másképp kell kezelnie a frissítéseket és a beszúrásokat, ezt megteheti a beszúráshoz vagy frissítéshez használt időbélyeg-mezők implementálásával.
Bevitel
Az Azure Cosmos DB bemeneti adatkötése az SQL API-t használja egy vagy több Azure Cosmos DB-dokumentum lekérésére, majd átadja ezeket a függvény bemeneti paraméterének. A dokumentumazonosítót vagy lekérdezési paramétereket a függvényt meghívó eseményindító alapján lehet meghatározni.
Bemenet – példa
Ez a szakasz a következő példákat tartalmazza:
- Üzenetsor-eseményindító, azonosító keresése a JSON-ból
- HTTP-eseményindító, azonosító keresése lekérdezési sztringből
- HTTP-eseményindító, azonosító keresése útvonaladatokból
- HTTP-eseményindító, azonosító keresése útvonaladatokból az SqlQuery használatával
- HTTP-eseményindító, több dokumentum lekérése az SqlQuery használatával
- HTTP-eseményindító, több dokumentum lekérése a DocumentClient használatával
A példák egy egyszerű ToDoItem
típusra utalnak:
namespace CosmosDBSamplesV1
{
public class ToDoItem
{
public string Id { get; set; }
public string Description { get; set; }
}
}
Üzenetsor-eseményindító, azonosító keresése a JSON-ból
Az alábbi példa egy C# függvényt mutat be, amely egyetlen dokumentumot kér le. A függvényt egy JSON-objektumot tartalmazó üzenetsor aktiválja. Az üzenetsor-eseményindító a JSON-t egy nevű objektumba ToDoItemLookup
elemzi, amely tartalmazza a keresendő azonosítót. Ez az azonosító egy dokumentum lekérésére ToDoItem
szolgál a megadott adatbázisból és gyűjteményből.
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-eseményindító, azonosító keresése lekérdezési sztringből
Az alábbi példa egy C# függvényt mutat be, amely egyetlen dokumentumot kér le. A függvényt egy olyan HTTP-kérés aktiválja, amely egy lekérdezési sztringgel adja meg a keresendő azonosítót. Ez az azonosító egy dokumentum lekérésére ToDoItem
szolgál a megadott adatbázisból és gyűjteményből.
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-eseményindító, azonosító keresése útvonaladatokból
Az alábbi példa egy C# függvényt mutat be, amely egyetlen dokumentumot kér le. A függvényt egy OLYAN HTTP-kérés aktiválja, amely útvonaladatokat használ a megkeresendő azonosító megadásához. Ez az azonosító egy dokumentum lekérésére ToDoItem
szolgál a megadott adatbázisból és gyűjteményből.
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-eseményindító, azonosító keresése útvonaladatokból az SqlQuery használatával
Az alábbi példa egy C# függvényt mutat be, amely egyetlen dokumentumot kér le. A függvényt egy OLYAN HTTP-kérés aktiválja, amely útvonaladatokat használ a megkeresendő azonosító megadásához. Ez az azonosító egy dokumentum lekérésére ToDoItem
szolgál a megadott adatbázisból és gyűjteményből.
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);
}
}
}
HTTP-eseményindító, több dokumentum lekérése az SqlQuery használatával
Az alábbi példa egy C#-függvényt mutat be, amely lekéri a dokumentumok listáját. A függvényt EGY HTTP-kérés aktiválja. A lekérdezés az SqlQuery
attribútumtulajdonságban van megadva.
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-eseményindító, több dokumentum lekérése a DocumentClient (C#) használatával
Az alábbi példa egy C#-függvényt mutat be, amely lekéri a dokumentumok listáját. A függvényt EGY HTTP-kérés aktiválja. A kód az DocumentClient
Azure Cosmos DB-kötés által biztosított példányt használja a dokumentumok listájának olvasásához. A DocumentClient
példány írási műveletekhez is használható.
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);
}
}
}
Bemenet – attribútumok
A folyamatban lévő C# osztálykódtárakban használja a DocumentDB attribútumot.
Az attribútum konstruktora az adatbázis nevét és a gyűjtemény nevét veszi fel. Ezekről a beállításokról és a konfigurálható egyéb tulajdonságokról az alábbi konfigurációs szakaszban tájékozódhat.
Bemenet – konfiguráció
Az alábbi táblázat a function.json fájlban és DocumentDB
az attribútumban beállított kötéskonfigurációs tulajdonságokat ismerteti.
function.json tulajdonság | Attribútumtulajdonság | Description |
---|---|---|
Típus | n.a. | A értéket a következő értékre kell állítani: documentdb . |
Irányba | n.a. | A értéket a következő értékre kell állítani: in . |
név | n.a. | Annak a kötési paraméternek a neve, amely a függvény dokumentumát képviseli. |
databaseName | DatabaseName | A dokumentumot tartalmazó adatbázis. |
Lekérdezés_neve | Lekérdezés_neve | A dokumentumot tartalmazó gyűjtemény neve. |
id | Id | A lekérendő dokumentum azonosítója. Ez a tulajdonság támogatja a kötési kifejezéseket. Ne állítsa be az azonosítót és az sqlQuery tulajdonságot sem. Ha egyiket sem állítja be, a rendszer lekéri a teljes gyűjteményt. |
sqlQuery | SqlQuery | Több dokumentum lekéréséhez használt Azure Cosmos DB SQL-lekérdezés. A tulajdonság támogatja a futtatókörnyezeti kötéseket, ahogy az ebben a példában is látható: SELECT * FROM c where c.departmentId = {departmentId} . Ne állítsa be az azonosítót és az sqlQuery tulajdonságot sem. Ha egyiket sem állítja be, a rendszer lekéri a teljes gyűjteményt. |
kapcsolat | ConnectionStringSetting | Az Azure Cosmos DB kapcsolati sztring tartalmazó alkalmazásbeállítás neve. |
partitionKey | PartitionKey | A keresés partíciókulcs-értékét adja meg. Kötési paramétereket is tartalmazhat. |
Helyi fejlesztéskor adja hozzá az alkalmazásbeállításokat a gyűjtemény local.settings.json fájljáhozValues
.
Bemenet – használat
Ha a függvény sikeresen kilép, a bemeneti dokumentum nevesített bemeneti paraméterekkel végzett módosításai automatikusan megmaradnak.
Kimenet
Az Azure Cosmos DB kimeneti kötéssel új dokumentumot írhat egy Azure Cosmos DB-adatbázisba az SQL API használatával.
Kimenet – példa
Ez a szakasz a következő példákat tartalmazza:
- Üzenetsor-eseményindító, egy dokumentum írása
- Üzenetsor-eseményindító, dokumentum írása a használatával
IAsyncCollector
A példák egy egyszerű ToDoItem
típusra utalnak:
namespace CosmosDBSamplesV1
{
public class ToDoItem
{
public string Id { get; set; }
public string Description { get; set; }
}
}
Üzenetsor-eseményindító, egy dokumentum írása
Az alábbi példa egy C#-függvényt mutat be, amely egy dokumentumot ad hozzá egy adatbázishoz a Queue Storage üzenetében megadott adatokkal.
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}");
}
}
}
Üzenetsor-eseményindító, dokumentum írása az IAsyncCollector használatával
Az alábbi példa egy C# függvényt mutat be, amely dokumentumgyűjteményt ad hozzá egy adatbázishoz egy JSON üzenetsorban megadott adatok használatával.
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);
}
}
}
}
Kimenet – attribútumok
A folyamatban lévő C# osztálykódtárakban használja a DocumentDB attribútumot.
Az attribútum konstruktora az adatbázis nevét és a gyűjtemény nevét veszi fel. Ezekről a beállításokról és a konfigurálható egyéb tulajdonságokról a Kimenet – konfiguráció című témakörben olvashat bővebben. Íme egy DocumentDB
attribútum példa egy metódus-aláírásban:
[FunctionName("QueueToDocDB")]
public static void Run(
[QueueTrigger("myqueue-items", Connection = "AzureWebJobsStorage")] string myQueueItem,
[DocumentDB("ToDoList", "Items", Id = "id", ConnectionStringSetting = "myCosmosDB")] out dynamic document)
{
...
}
Teljes példáért lásd: Kimenet.
Kimenet – konfiguráció
Az alábbi táblázat a function.json fájlban és DocumentDB
az attribútumban beállított kötéskonfigurációs tulajdonságokat ismerteti.
function.json tulajdonság | Attribútumtulajdonság | Description |
---|---|---|
Típus | n.a. | A értéket értékre kell állítani.documentdb |
Irányba | n.a. | A értéket értékre kell állítani.out |
név | n.a. | A függvény dokumentumát képviselő kötési paraméter neve. |
databaseName | DatabaseName | A dokumentumot létrehozó gyűjteményt tartalmazó adatbázis. |
Lekérdezés_neve | Lekérdezés_neve | Annak a gyűjteménynek a neve, amelyben a dokumentum létrejön. |
createIfNotExists | CreateIfNotExists | Logikai érték, amely azt jelzi, hogy a gyűjtemény akkor jön létre, ha nem létezik. Az alapértelmezett érték hamis , mert az új gyűjtemények fenntartott átviteli sebességgel jönnek létre, ami költségekkel jár. További tájékoztatás a díjszabási lapon olvasható. |
partitionKey | PartitionKey | Ha CreateIfNotExists igaz, meghatározza a létrehozott gyűjtemény partíciókulcs-elérési útját. |
collectionThroughput | CollectionThroughput | Ha CreateIfNotExists az érték igaz, a létrehozott gyűjtemény átviteli sebességét határozza meg. |
kapcsolat | ConnectionStringSetting | Az Azure Cosmos DB-kapcsolati sztring tartalmazó alkalmazásbeállítás neve. |
Helyi fejlesztéskor adja hozzá az alkalmazásbeállításokat a gyűjtemény local.settings.json fájljáhozValues
.
Kimenet – használat
Alapértelmezés szerint, amikor a függvény kimeneti paraméterére ír, a rendszer létrehoz egy dokumentumot az adatbázisban. Ez a dokumentum egy automatikusan létrehozott GUID azonosítóval rendelkezik a dokumentum azonosítójaként. A kimeneti dokumentum dokumentumazonosítóját a kimeneti paraméternek átadott JSON-objektum tulajdonságának megadásával adhatja meg id
.
Megjegyzés
Egy meglévő dokumentum azonosítójának megadásakor az új kimeneti dokumentum felülírja azt.
Kivételek és visszatérési kódok
Kötés | Referencia |
---|---|
Azure Cosmos DB | HTTP-állapotkódok az Azure Cosmos DB-hez |