Azure üzenetsor-tárolási kötések Azure FunctionshozAzure Queue storage bindings for Azure Functions

Ez a cikk azt ismerteti, hogyan használható az Azure üzenetsor-tárolási kötések Azure Functions.This article explains how to work with Azure Queue storage bindings in Azure Functions. Azure Functions támogatja a várólisták trigger-és kimeneti kötéseit.Azure Functions supports trigger and output bindings for queues.

Ez az információ az Azure Functions-fejlesztők számára.This is reference information for Azure Functions developers. Ha most ismerkedik az Azure Functions, indítsa el az alábbi forrásanyagokat:If you're new to Azure Functions, start with the following resources:

Csomagok – 1. x függvényekPackages - Functions 1.x

A várólista-tárolási kötések a Microsoft. Azure. webjobs NuGet csomagban, 2. x verzióban találhatók.The Queue storage bindings are provided in the Microsoft.Azure.WebJobs NuGet package, version 2.x. A csomag forráskódja az Azure-webjobs-SDK GitHub-tárházban található.Source code for the package is in the azure-webjobs-sdk GitHub repository.

Minden fejlesztési környezetek automatikusan nyújtott támogatás a kötéshez.Support for this binding is automatically provided in all development environments. Nem kell manuálisan telepítse a csomagot, vagy a bővítmény regisztrálásához.You don't have to manually install the package or register the extension.

A Functions az Azure Storage SDK-verzió 1.xAzure Storage SDK version in Functions 1.x

Függvények 1.x, tároló-eseményindítók és kötések használata az Azure Storage SDK 7.2.1 verzióját (WindowsAzure.Storage NuGet-csomag).In Functions 1.x, the Storage triggers and bindings use version 7.2.1 of the Azure Storage SDK (WindowsAzure.Storage NuGet package). A Storage SDK-t egy másik verziója hivatkozik, és a függvényfej a kötés Storage SDK-t típusra, a Functions futtatókörnyezete, hogy nem köthető az adott típusú feltétlenül jelentik.If you reference a different version of the Storage SDK, and you bind to a Storage SDK type in your function signature, the Functions runtime may report that it can't bind to that type. A megoldás az, hogy ellenőrizze, hogy a projekt referenciáihoz WindowsAzure.Storage 7.2.1.The solution is to make sure your project references WindowsAzure.Storage 7.2.1.

Csomagok – 2. x függvényekPackages - Functions 2.x

A várólista-tárolási kötések a Microsoft. Azure. webjobs. Extensions. Storage NuGet csomag 3. x verziójában érhetők el.The Queue storage bindings are provided in the Microsoft.Azure.WebJobs.Extensions.Storage NuGet package, version 3.x. A csomag forráskódja az Azure-webjobs-SDK GitHub-tárházban található.Source code for the package is in the azure-webjobs-sdk GitHub repository.

Az alábbi táblázat bemutatja, hogyan lehet ezt a kötést támogatása hozzáadva minden fejlesztési környezetben.The following table tells how to add support for this binding in each development environment.

Fejlesztési környezetDevelopment environment A támogatás hozzáadásaTo add support in
Functions 2.xFunctions 2.x
Helyi fejlesztés – C# osztálytárLocal development - C# class library A csomag telepítéseInstall the package
Helyi fejlesztés – C# parancsfájl, JavaScript, F#, Java és Python nyelvenLocal development - C# script, JavaScript, F#, Java and Python A bővítmény regisztrálásaRegister the extension
A fejlesztői portálPortal development Telepítse a kimeneti kötés hozzáadása soránInstall when adding output binding

Megtudhatja, hogyan lehet frissíteni a létező kötés bővítmények a portálon való ismételt közzétételéhez a függvényalkalmazás projektjét nélkül, tekintse meg a a bővítmények frissítése.To learn how to update existing binding extensions in the portal without having to republish your function app project, see Update your extensions.

EncodingEncoding

A függvények Base64 kódolású karakterláncot várnak.Functions expect a base64 encoded string. A kódolási típus összes módosítását (az adatgyűjtés Base64 kódolású karakterláncként való előkészítéséhez) a hívó szolgáltatásban kell végrehajtani.Any adjustments to the encoding type (in order to prepare data as a base64 encoded string) need to be implemented in the calling service.

EseményindítóTrigger

A várólista-trigger használatával elindíthat egy függvényt, ha új elem érkezik egy várólistán.Use the queue trigger to start a function when a new item is received on a queue. A várólista-üzenet bemenetként van megadva a függvénynek.The queue message is provided as input to the function.

Trigger – példaTrigger - example

Tekintse meg a nyelvspecifikus példát:See the language-specific example:

Trigger – C# példaTrigger - C# example

Az alábbi példa egy olyan C# függvényt mutat be, amely lekérdezi a myqueue-items várólistát, és minden alkalommal beírja a naplót, amikor a várólista-elemek feldolgozása történik.The following example shows a C# function that polls the myqueue-items queue and writes a log each time a queue item is processed.

public static class QueueFunctions
{
    [FunctionName("QueueTrigger")]
    public static void QueueTrigger(
        [QueueTrigger("myqueue-items")] string myQueueItem, 
        ILogger log)
    {
        log.LogInformation($"C# function processed: {myQueueItem}");
    }
}

Trigger – C# parancsfájl-példaTrigger - C# script example

Az alábbi példa egy üzenetsor-trigger kötést mutat be egy function. JSON fájlban és C# a kötést használó script (. CSX) kódban.The following example shows a queue trigger binding in a function.json file and C# script (.csx) code that uses the binding. A függvény lekérdezi a myqueue-items várólistát, és minden alkalommal beírja a naplót, amikor a várólista-elemek feldolgozása történik.The function polls the myqueue-items queue and writes a log each time a queue item is processed.

Itt látható a function. JSON fájl:Here's the function.json file:

{
    "disabled": false,
    "bindings": [
        {
            "type": "queueTrigger",
            "direction": "in",
            "name": "myQueueItem",
            "queueName": "myqueue-items",
            "connection":"MyStorageConnectionAppSetting"
        }
    ]
}

A konfigurációs szakasz ezeket a tulajdonságokat ismerteti.The configuration section explains these properties.

A C# szkript kódja:Here's the C# script code:

#r "Microsoft.WindowsAzure.Storage"

using Microsoft.Extensions.Logging;
using Microsoft.WindowsAzure.Storage.Queue;
using System;

public static void Run(CloudQueueMessage myQueueItem, 
    DateTimeOffset expirationTime, 
    DateTimeOffset insertionTime, 
    DateTimeOffset nextVisibleTime,
    string queueTrigger,
    string id,
    string popReceipt,
    int dequeueCount,
    ILogger log)
{
    log.LogInformation($"C# Queue trigger function processed: {myQueueItem.AsString}\n" +
        $"queueTrigger={queueTrigger}\n" +
        $"expirationTime={expirationTime}\n" +
        $"insertionTime={insertionTime}\n" +
        $"nextVisibleTime={nextVisibleTime}\n" +
        $"id={id}\n" +
        $"popReceipt={popReceipt}\n" + 
        $"dequeueCount={dequeueCount}");
}

A használat szakasz a myQueueItem nevet ismerteti, amelyet a function. json fájl name tulajdonsága nevez el.The usage section explains myQueueItem, which is named by the name property in function.json. Az üzenet metaadatainak szakasza a többi megjelenített változót ismerteti.The message metadata section explains all of the other variables shown.

Trigger – JavaScript-példaTrigger - JavaScript example

Az alábbi példa egy várólista-trigger kötését mutatja be egy function. JSON fájlban, valamint egy JavaScript-függvényt , amely a kötést használja.The following example shows a queue trigger binding in a function.json file and a JavaScript function that uses the binding. A függvény lekérdezi a myqueue-items várólistát, és minden alkalommal beírja a naplót, amikor a várólista-elemek feldolgozása történik.The function polls the myqueue-items queue and writes a log each time a queue item is processed.

Itt látható a function. JSON fájl:Here's the function.json file:

{
    "disabled": false,
    "bindings": [
        {
            "type": "queueTrigger",
            "direction": "in",
            "name": "myQueueItem",
            "queueName": "myqueue-items",
            "connection":"MyStorageConnectionAppSetting"
        }
    ]
}

A konfigurációs szakasz ezeket a tulajdonságokat ismerteti.The configuration section explains these properties.

Megjegyzés

A name paraméter a (z) context.bindings.<name> értéket tükrözi a JavaScript-kódban, amely tartalmazza a várólista-elemek hasznos adatait.The name parameter reflects as context.bindings.<name> in the JavaScript code which contains the queue item payload. Ezt a hasznos adatot a függvény második paramétereként is átadja.This payload is also passed as the second parameter to the function.

Itt látható a JavaScript-kód:Here's the JavaScript code:

module.exports = async function (context, message) {
    context.log('Node.js queue trigger function processed work item', message);
    // OR access using context.bindings.<name>
    // context.log('Node.js queue trigger function processed work item', context.bindings.myQueueItem);
    context.log('expirationTime =', context.bindingData.expirationTime);
    context.log('insertionTime =', context.bindingData.insertionTime);
    context.log('nextVisibleTime =', context.bindingData.nextVisibleTime);
    context.log('id =', context.bindingData.id);
    context.log('popReceipt =', context.bindingData.popReceipt);
    context.log('dequeueCount =', context.bindingData.dequeueCount);
    context.done();
};

A használat szakasz a myQueueItem nevet ismerteti, amelyet a function. json fájl name tulajdonsága nevez el.The usage section explains myQueueItem, which is named by the name property in function.json. Az üzenet metaadatainak szakasza a többi megjelenített változót ismerteti.The message metadata section explains all of the other variables shown.

Trigger – Java-példaTrigger - Java example

A következő Java-példa egy Storage üzenetsor-kiváltó függvényt mutat be, amely naplózza a myqueuename várólistára helyezett aktivált üzenetet.The following Java example shows a storage queue trigger functions which logs the triggered message placed into queue myqueuename.

@FunctionName("queueprocessor")
public void run(
   @QueueTrigger(name = "msg",
                  queueName = "myqueuename",
                  connection = "myconnvarname") String message,
    final ExecutionContext context
) {
    context.getLogger().info(message);
}

Trigger – Python-példaTrigger - Python example

Az alábbi példa azt szemlélteti, hogyan lehet beolvasni egy függvénynek egy trigger használatával átadott üzenetsor-üzenetet.The following example demonstrates how to read a queue message passed to a function via a trigger.

A Storage-várólista triggere a function. JSON fájlban van definiálva, ahol a Type értéke queueTrigger.A Storage queue trigger is defined in function.json where type is set to queueTrigger.

{
  "scriptFile": "__init__.py",
  "bindings": [
    {
      "name": "msg",
      "type": "queueTrigger",
      "direction": "in",
      "queueName": "messages",
      "connection": "AzureStorageQueuesConnectionString"
    }
  ]
}

A _init_.py kód func.ServiceBusMessage paramétert deklarál, amely lehetővé teszi a várólista-üzenet olvasását a függvényben.The code _init_.py declares a parameter as func.ServiceBusMessage which allows you to read the queue message in your function.

import logging
import json

import azure.functions as func

def main(msg: func.QueueMessage):
    logging.info('Python queue trigger function processed a queue item.')

    result = json.dumps({
        'id': msg.id,
        'body': msg.get_body().decode('utf-8'),
        'expiration_time': (msg.expiration_time.isoformat()
                            if msg.expiration_time else None),
        'insertion_time': (msg.insertion_time.isoformat()
                           if msg.insertion_time else None),
        'time_next_visible': (msg.time_next_visible.isoformat()
                              if msg.time_next_visible else None),
        'pop_receipt': msg.pop_receipt,
        'dequeue_count': msg.dequeue_count
    })

    logging.info(result)

Trigger – attribútumokTrigger - attributes

Az C# osztályok könyvtáraibanhasználja a következő attribútumokat az üzenetsor-trigger konfigurálásához:In C# class libraries, use the following attributes to configure a queue trigger:

  • QueueTriggerAttributeQueueTriggerAttribute

    Az attribútum konstruktora a figyelni kívánt várólista nevét adja meg, ahogy az az alábbi példában is látható:The attribute's constructor takes the name of the queue to monitor, as shown in the following example:

    [FunctionName("QueueTrigger")]
    public static void Run(
        [QueueTrigger("myqueue-items")] string myQueueItem, 
        ILogger log)
    {
        ...
    }
    

    A Connection tulajdonság beállításával megadhatja a használni kívánt Storage-fiókot, ahogy az az alábbi példában is látható:You can set the Connection property to specify the storage account to use, as shown in the following example:

    [FunctionName("QueueTrigger")]
    public static void Run(
        [QueueTrigger("myqueue-items", Connection = "StorageConnectionAppSetting")] string myQueueItem, 
        ILogger log)
    {
        ....
    }
    

    A teljes példa: trigger- C# example.For a complete example, see Trigger - C# example.

  • StorageAccountAttributeStorageAccountAttribute

    Egy másik módszert biztosít a használni kívánt Storage-fiók megadására.Provides another way to specify the storage account to use. A konstruktor egy olyan Alkalmazásbeállítás nevét veszi fel, amely egy tárolási kapcsolatot tartalmazó karakterláncot tartalmaz.The constructor takes the name of an app setting that contains a storage connection string. Az attribútumot a paraméter, a metódus vagy az osztály szintjén lehet alkalmazni.The attribute can be applied at the parameter, method, or class level. Az alábbi példa az osztály szintjét és a metódus szintjét mutatja be:The following example shows class level and method level:

    [StorageAccount("ClassLevelStorageAppSetting")]
    public static class AzureFunctions
    {
        [FunctionName("QueueTrigger")]
        [StorageAccount("FunctionLevelStorageAppSetting")]
        public static void Run( //...
    {
        ...
    }
    

A használandó Storage-fiók a következő sorrendben van meghatározva:The storage account to use is determined in the following order:

  • A QueueTrigger attribútum Connection tulajdonsága.The QueueTrigger attribute's Connection property.
  • A QueueTrigger attribútummal megegyező paraméterre alkalmazott StorageAccount attribútum.The StorageAccount attribute applied to the same parameter as the QueueTrigger attribute.
  • A függvényre alkalmazott StorageAccount attribútum.The StorageAccount attribute applied to the function.
  • Az osztályra alkalmazott StorageAccount attribútum.The StorageAccount attribute applied to the class.
  • A "AzureWebJobsStorage" alkalmazás beállításai.The "AzureWebJobsStorage" app setting.

Trigger – konfigurációTrigger - configuration

A következő táblázat a function. JSON fájlban és a QueueTrigger attribútumban beállított kötési konfigurációs tulajdonságokat ismerteti.The following table explains the binding configuration properties that you set in the function.json file and the QueueTrigger attribute.

function. JSON-tulajdonságfunction.json property Attribútum tulajdonságaAttribute property LeírásDescription
typetype n/a @No__t-0 értékre kell állítani.Must be set to queueTrigger. Ez a tulajdonság automatikusan be van állítva, amikor létrehozza az triggert a Azure Portalban.This property is set automatically when you create the trigger in the Azure portal.
directiondirection n/a Csak a function. JSON fájlban.In the function.json file only. @No__t-0 értékre kell állítani.Must be set to in. Ez a tulajdonság automatikusan be van állítva, amikor létrehozza az triggert a Azure Portalban.This property is set automatically when you create the trigger in the Azure portal.
névname n/a Annak a változónak a neve, amely a függvény kódjában található üzenetsor-elemek tartalmát tartalmazza.The name of the variable that contains the queue item payload in the function code.
queueNamequeueName QueueNameQueueName A lekérdezni kívánt várólista neve.The name of the queue to poll.
kapcsolatconnection KapcsolatConnection Egy olyan Alkalmazásbeállítás neve, amely a kötéshez használandó tárolási kapcsolati karakterláncot tartalmazza.The name of an app setting that contains the Storage connection string to use for this binding. Ha az Alkalmazásbeállítások neve "AzureWebJobs" előtaggal kezdődik, akkor itt csak a nevet adja meg.If the app setting name begins with "AzureWebJobs", you can specify only the remainder of the name here. Ha például a connection értéket adja meg a "MyStorage" értékre, a functions futtatókörnyezet egy "AzureWebJobsMyStorage" nevű alkalmazás-beállítást keres.For example, if you set connection to "MyStorage", the Functions runtime looks for an app setting that is named "AzureWebJobsMyStorage." Ha üresen hagyja a connection értéket, a functions futtatókörnyezet az alapértelmezett tárolási kapcsolatok karakterláncát használja az AzureWebJobsStorage nevű alkalmazás-beállításban.If you leave connection empty, the Functions runtime uses the default Storage connection string in the app setting that is named AzureWebJobsStorage.

Ha helyileg fejleszt, Alkalmazásbeállítások lépnek a local.settings.json fájljában.When you're developing locally, app settings go into the local.settings.json file.

Trigger – használatTrigger - usage

A C# ( C# z) és a (z) parancsfájlban a (z) string paramName metódussal férhet hozzá az üzenet adataihoz.In C# and C# script, access the message data by using a method parameter such as string paramName. A C# szkriptben paramName a function. JSONname tulajdonságában megadott érték.In C# script, paramName is the value specified in the name property of function.json. A következő típusokhoz köthető:You can bind to any of the following types:

  • Objektum – a függvények futtatókörnyezete deszerializál egy JSON-adattartalmat a kódban definiált tetszőleges osztály egy példányára.Object - The Functions runtime deserializes a JSON payload into an instance of an arbitrary class defined in your code.
  • string
  • byte[]
  • CloudQueueMessageCloudQueueMessage

Ha CloudQueueMessage értékre próbál kötni, és hibaüzenetet kap, ellenőrizze, hogy rendelkezik-e a megfelelő Storage SDK-verzióramutató hivatkozással.If you try to bind to CloudQueueMessage and get an error message, make sure that you have a reference to the correct Storage SDK version.

A JavaScriptben használja a context.bindings.<name> lehetőséget a várólista-elem hasznos adatainak eléréséhez.In JavaScript, use context.bindings.<name> to access the queue item payload. Ha a hasznos adat JSON, deszerializálja egy objektumba.If the payload is JSON, it's deserialized into an object.

Trigger – üzenet metaadatainakTrigger - message metadata

A várólista-trigger számos metaadat-tulajdonságotbiztosít.The queue trigger provides several metadata properties. Ezek a tulajdonságok a más kötésekben lévő kötési kifejezések vagy a kódban szereplő paraméterek részeként is használhatók.These properties can be used as part of binding expressions in other bindings or as parameters in your code. Ezek a CloudQueueMessage osztály tulajdonságai.These are properties of the CloudQueueMessage class.

TulajdonságProperty Type (Típus)Type LeírásDescription
QueueTrigger string Várólista-adattartalom (ha érvényes karakterlánc).Queue payload (if a valid string). Ha az üzenetsor üzenete sztringként van feldolgozva, QueueTrigger értéke megegyezik a function. JSONfájlban található name tulajdonság által megnevezett változóval.If the queue message payload as a string, QueueTrigger has the same value as the variable named by the name property in function.json.
DequeueCount int Azon alkalmak száma, amikor az üzenet el lett küldve.The number of times this message has been dequeued.
ExpirationTime DateTimeOffset Az az időpont, ameddig az üzenet lejár.The time that the message expires.
Id string Üzenetsor-üzenet azonosítója.Queue message ID.
InsertionTime DateTimeOffset Az az idő, ameddig az üzenet hozzá lett adva a várólistához.The time that the message was added to the queue.
NextVisibleTime DateTimeOffset Az az időpont, amikor a következő üzenet látható lesz.The time that the message will next be visible.
PopReceipt string Az üzenet pop-nyugtája.The message's pop receipt.

Trigger – Megmérgező üzenetekTrigger - poison messages

Ha a várólista-aktiválási függvény meghiúsul, Azure Functions újrapróbálkozik a függvényt egy adott üzenetsor-üzenetnél akár ötször is, az első próbálkozást is beleértve.When a queue trigger function fails, Azure Functions retries the function up to five times for a given queue message, including the first try. Ha mind az öt kísérlet meghiúsul, a functions Runtime egy <originalqueuename >-Poisonnevű várólistába helyez egy üzenetet.If all five attempts fail, the functions runtime adds a message to a queue named <originalqueuename>-poison. Írhat egy függvényt, amely az üzenetek törlését végzi a méreg-várólistából úgy, hogy naplózza azokat, vagy értesítést küld, amely manuális beavatkozást igényel.You can write a function to process messages from the poison queue by logging them or sending a notification that manual attention is needed.

Ha manuálisan szeretné kezelni a Megmérgező üzeneteket, keresse meg az üzenetsor dequeueCount .To handle poison messages manually, check the dequeueCount of the queue message.

Trigger – lekérdezési algoritmusTrigger - polling algorithm

A várólista-trigger egy véletlenszerű exponenciális visszakapcsolási algoritmust valósít meg, amely csökkenti az üresjárati üzenetsor lekérdezésének hatását a tárolási tranzakciós költségekre.The queue trigger implements a random exponential back-off algorithm to reduce the effect of idle-queue polling on storage transaction costs. Ha a rendszer egy üzenetet talál, a futtatókörnyezet két másodpercet vár, majd egy másik üzenetet keres. Ha nem talál üzenetet, a rendszer körülbelül négy másodpercig vár, mielőtt újra próbálkozik.When a message is found, the runtime waits two seconds and then checks for another message; when no message is found, it waits about four seconds before trying again. A várakozási sor üzenetének későbbi sikertelen próbálkozásai után a várakozási idő továbbra is növekszik, amíg el nem éri a maximális várakozási időt, ami alapértelmezés szerint egy percet mutat.After subsequent failed attempts to get a queue message, the wait time continues to increase until it reaches the maximum wait time, which defaults to one minute. A maximális várakozási idő a Host. JSON fájlbantalálható maxPollingInterval tulajdonsággal állítható be.The maximum wait time is configurable via the maxPollingInterval property in the host.json file.

Trigger – EgyidejűségTrigger - concurrency

Ha a várólista-üzenetek több várólistára várnak, a várólista-trigger lekéri az üzenetek kötegét, és egyidejűleg hívja meg a függvények feldolgozását.When there are multiple queue messages waiting, the queue trigger retrieves a batch of messages and invokes function instances concurrently to process them. Alapértelmezés szerint a köteg mérete 16.By default, the batch size is 16. Ha a feldolgozás alatt álló szám 8, a futtatókörnyezet lekéri egy másik köteget, és elindítja az üzenetek feldolgozását.When the number being processed gets down to 8, the runtime gets another batch and starts processing those messages. Így az egyazon virtuális gépeken (VM-ben) végrehajtott, egyidejű feldolgozás alatt álló üzenetek maximális száma 24.So the maximum number of concurrent messages being processed per function on one virtual machine (VM) is 24. Ez a korlát külön vonatkozik az egyes virtuális gépeken futó minden egyes üzenetsor által aktivált függvényre.This limit applies separately to each queue-triggered function on each VM. Ha a függvény alkalmazása több virtuális gépre is méretezhető, minden virtuális gép megvárja az eseményindítókat, és megkísérli futtatni a függvényeket.If your function app scales out to multiple VMs, each VM will wait for triggers and attempt to run functions. Ha például egy függvény alkalmazás 3 virtuális gépre van kibővítve, az egy üzenetsor által aktivált függvény egyidejű példányainak alapértelmezett maximális száma 72.For example, if a function app scales out to 3 VMs, the default maximum number of concurrent instances of one queue-triggered function is 72.

A köteg mérete és az új köteg beolvasásának küszöbértéke a Host. JSON fájlbanállítható be.The batch size and the threshold for getting a new batch are configurable in the host.json file. Ha a függvény alkalmazásban a várólista által aktivált függvények párhuzamos végrehajtását szeretné csökkenteni, beállíthatja a Batch méretét 1-re.If you want to minimize parallel execution for queue-triggered functions in a function app, you can set the batch size to 1. Ez a beállítás csak akkor teszi feleslegessé a párhuzamosságot, ha a Function alkalmazás egyetlen virtuális gépen (VM) fut.This setting eliminates concurrency only so long as your function app runs on a single virtual machine (VM).

A várólista-trigger automatikusan megakadályozza, hogy a függvény többször dolgozza fel a várólista-üzeneteket; a függvények nem írhatók idempotens.The queue trigger automatically prevents a function from processing a queue message multiple times; functions do not have to be written to be idempotent.

Trigger-Host. JSON tulajdonságokTrigger - host.json properties

A Host. JSON fájl olyan beállításokat tartalmaz, amelyek vezérlik a várólista-trigger működését.The host.json file contains settings that control queue trigger behavior. A rendelkezésre álló beállításokkal kapcsolatos részletekért tekintse meg a Host. JSON-beállítások szakaszt.See the host.json settings section for details regarding available settings.

KimenetOutput

Az Azure üzenetsor-tároló kimeneti kötésével üzeneteket írhat a várólistákba.Use the Azure Queue storage output binding to write messages to a queue.

Kimenet – példaOutput - example

Tekintse meg a nyelvspecifikus példát:See the language-specific example:

Kimenet – C# példaOutput - C# example

Az alábbi példa egy C# függvényt mutat be, amely létrehoz egy üzenetsor-üzenetet minden fogadott http-kérelemhez.The following example shows a C# function that creates a queue message for each HTTP request received.

[StorageAccount("AzureWebJobsStorage")]
public static class QueueFunctions
{
    [FunctionName("QueueOutput")]
    [return: Queue("myqueue-items")]
    public static string QueueOutput([HttpTrigger] dynamic input,  ILogger log)
    {
        log.LogInformation($"C# function processed: {input.Text}");
        return input.Text;
    }
}

Kimenet – C# parancsfájl – példaOutput - C# script example

Az alábbi példa egy http-trigger kötést mutat be egy function. JSON fájlban és C# parancsfájlban (. CSX) , amely a kötést használja.The following example shows an HTTP trigger binding in a function.json file and C# script (.csx) code that uses the binding. A függvény egy CustomQueueMessage objektum-adattartalommal rendelkező üzenetsor-objektumot hoz létre minden fogadott http-kérelemhez.The function creates a queue item with a CustomQueueMessage object payload for each HTTP request received.

Itt látható a function. JSON fájl:Here's the function.json file:

{
  "bindings": [
    {
      "type": "httpTrigger",
      "direction": "in",
      "authLevel": "function",
      "name": "input"
    },
    {
      "type": "http",
      "direction": "out",
      "name": "return"
    },
    {
      "type": "queue",
      "direction": "out",
      "name": "$return",
      "queueName": "outqueue",
      "connection": "MyStorageConnectionAppSetting"
    }
  ]
}

A konfigurációs szakasz ezeket a tulajdonságokat ismerteti.The configuration section explains these properties.

Az alábbi C# parancsfájl-kód létrehoz egy üzenetsor-üzenetet:Here's C# script code that creates a single queue message:

public class CustomQueueMessage
{
    public string PersonName { get; set; }
    public string Title { get; set; }
}

public static CustomQueueMessage Run(CustomQueueMessage input, ILogger log)
{
    return input;
}

@No__t-0 vagy IAsyncCollector paraméter használatával egyszerre több üzenetet is küldhet.You can send multiple messages at once by using an ICollector or IAsyncCollector parameter. Itt van C# egy parancsfájl-kód, amely több üzenetet küld, egyet a HTTP-kérelem adatait, egy pedig egy rögzített értéket:Here's C# script code that sends multiple messages, one with the HTTP request data and one with hard-coded values:

public static void Run(
    CustomQueueMessage input, 
    ICollector<CustomQueueMessage> myQueueItems, 
    ILogger log)
{
    myQueueItems.Add(input);
    myQueueItems.Add(new CustomQueueMessage { PersonName = "You", Title = "None" });
}

Kimenet – JavaScript-példaOutput - JavaScript example

Az alábbi példa egy HTTP-trigger kötést mutat be egy function. JSON fájlban, valamint egy JavaScript-függvényt , amely a kötést használja.The following example shows an HTTP trigger binding in a function.json file and a JavaScript function that uses the binding. A függvény minden fogadott HTTP-kérelemhez létrehoz egy üzenetsor-tételt.The function creates a queue item for each HTTP request received.

Itt látható a function. JSON fájl:Here's the function.json file:

{
  "bindings": [
    {
      "type": "httpTrigger",
      "direction": "in",
      "authLevel": "function",
      "name": "input"
    },
    {
      "type": "http",
      "direction": "out",
      "name": "return"
    },
    {
      "type": "queue",
      "direction": "out",
      "name": "$return",
      "queueName": "outqueue",
      "connection": "MyStorageConnectionAppSetting"
    }
  ]
}

A konfigurációs szakasz ezeket a tulajdonságokat ismerteti.The configuration section explains these properties.

Itt látható a JavaScript-kód:Here's the JavaScript code:

module.exports = function (context, input) {
    context.done(null, input.body);
};

Egyszerre több üzenetet is küldhet, ha a myQueueItem kimeneti kötéshez definiál egy üzenet-tömböt.You can send multiple messages at once by defining a message array for the myQueueItem output binding. A következő JavaScript-kód két üzenetsor-üzenetet küld az egyes fogadott HTTP-kérelmekhez rögzített értékekkel.The following JavaScript code sends two queue messages with hard-coded values for each HTTP request received.

module.exports = function(context) {
    context.bindings.myQueueItem = ["message 1","message 2"];
    context.done();
};

Kimenet – Java-példaOutput - Java example

Az alábbi példa egy Java-függvényt mutat be, amely üzenetsor-üzenetet hoz létre a HTTP-kérések indításakor.The following example shows a Java function that creates a queue message for when triggered by a HTTP request.

@FunctionName("httpToQueue")
@QueueOutput(name = "item", queueName = "myqueue-items", connection = "AzureWebJobsStorage")
 public String pushToQueue(
     @HttpTrigger(name = "request", methods = {HttpMethod.POST}, authLevel = AuthorizationLevel.ANONYMOUS)
     final String message,
     @HttpOutput(name = "response") final OutputBinding&lt;String&gt; result) {
       result.setValue(message + " has been added.");
       return message;
 }

A Java functions runtime library-ben használja a @QueueOutput megjegyzéseket azon paramétereknél, amelyek értékét a várólista-tárolóba kívánja írni.In the Java functions runtime library, use the @QueueOutput annotation on parameters whose value would be written to Queue storage. A paraméter típusának OutputBinding<T> értékűnek kell lennie, ahol a T egy POJO natív Java-típusa.The parameter type should be OutputBinding<T>, where T is any native Java type of a POJO.

Kimenet – Python-példaOutput - Python example

Az alábbi példa bemutatja, hogyan lehet egy és több értéket kiadni a tárolási várólistáknak.The following example demonstrates how to output single and multiple values to storage queues. A function. JSON fájlhoz szükséges konfiguráció ugyanaz, mint az egyik módja.The configuration needed for function.json is the same either way.

A Storage-várólista kötése a function. JSON fájlban van definiálva, ahol a Type értéke queue.A Storage queue binding is defined in function.json where type is set to queue.

{
  "scriptFile": "__init__.py",
  "bindings": [
    {
      "authLevel": "function",
      "type": "httpTrigger",
      "direction": "in",
      "name": "req",
      "methods": [
        "get",
        "post"
      ]
    },
    {
      "type": "http",
      "direction": "out",
      "name": "$return"
    },
    {
      "type": "queue",
      "direction": "out",
      "name": "msg",
      "queueName": "outqueue",
      "connection": "AzureStorageQueuesConnectionString"
    }
  ]
}

Ha egyéni üzenetet szeretne beállítani a várólistán, egyetlen értéket kell átadnia a set metódusnak.To set a individual message on the queue, you pass a single value to the set method.

import azure.functions as func

def main(req: func.HttpRequest, msg: func.Out[str]) -> func.HttpResponse:

    input_msg = req.params.get('message')

    msg.set(input_msg)

    return 'OK'

Ha több üzenetet szeretne létrehozni a várólistán, deklaráljon egy paramétert a megfelelő lista típusaként, és adjon át egy értékeket tartalmazó tömböt (amely megfelel a lista típusának) a set metódusnak.To create multiple messages on the queue, declare a parameter as the appropriate list type and pass an array of values (that match the list type) to the set method.

import azure.functions as func
import typing

def main(req: func.HttpRequest, msg: func.Out[typing.List[str]]) -> func.HttpResponse:

    msg.set(['one', 'two'])

    return 'OK'

Kimenet – attribútumokOutput - attributes

Az C# osztályok könyvtáraibanhasználja a QueueAttribute.In C# class libraries, use the QueueAttribute.

Az attribútum az out paraméterre vagy a függvény visszatérési értékére vonatkozik.The attribute applies to an out parameter or the return value of the function. Az attribútum konstruktora a várólista nevét veszi át, ahogy az az alábbi példában látható:The attribute's constructor takes the name of the queue, as shown in the following example:

[FunctionName("QueueOutput")]
[return: Queue("myqueue-items")]
public static string Run([HttpTrigger] dynamic input,  ILogger log)
{
    ...
}

A Connection tulajdonság beállításával megadhatja a használni kívánt Storage-fiókot, ahogy az az alábbi példában is látható:You can set the Connection property to specify the storage account to use, as shown in the following example:

[FunctionName("QueueOutput")]
[return: Queue("myqueue-items", Connection = "StorageConnectionAppSetting")]
public static string Run([HttpTrigger] dynamic input,  ILogger log)
{
    ...
}

Teljes példa: kimenet – C# példa.For a complete example, see Output - C# example.

Az StorageAccount attribútummal megadhatja a Storage-fiókot osztály, metódus vagy paraméter szintjén.You can use the StorageAccount attribute to specify the storage account at class, method, or parameter level. További információ: trigger-attributes.For more information, see Trigger - attributes.

Kimenet – konfigurációOutput - configuration

A következő táblázat a function. JSON fájlban és a Queue attribútumban beállított kötési konfigurációs tulajdonságokat ismerteti.The following table explains the binding configuration properties that you set in the function.json file and the Queue attribute.

function. JSON-tulajdonságfunction.json property Attribútum tulajdonságaAttribute property LeírásDescription
typetype n/a @No__t-0 értékre kell állítani.Must be set to queue. Ez a tulajdonság automatikusan be van állítva, amikor létrehozza az triggert a Azure Portalban.This property is set automatically when you create the trigger in the Azure portal.
directiondirection n/a @No__t-0 értékre kell állítani.Must be set to out. Ez a tulajdonság automatikusan be van állítva, amikor létrehozza az triggert a Azure Portalban.This property is set automatically when you create the trigger in the Azure portal.
névname n/a Annak a változónak a neve, amely a függvény kódjában a várólistát jelképezi.The name of the variable that represents the queue in function code. A függvény visszaadott értékére való hivatkozáshoz állítsa a $return értéket.Set to $return to reference the function return value.
queueNamequeueName QueueNameQueueName A várólista neve.The name of the queue.
kapcsolatconnection KapcsolatConnection Egy olyan Alkalmazásbeállítás neve, amely a kötéshez használandó tárolási kapcsolati karakterláncot tartalmazza.The name of an app setting that contains the Storage connection string to use for this binding. Ha az Alkalmazásbeállítások neve "AzureWebJobs" előtaggal kezdődik, akkor itt csak a nevet adja meg.If the app setting name begins with "AzureWebJobs", you can specify only the remainder of the name here. Ha például a connection értéket adja meg a "MyStorage" értékre, a functions futtatókörnyezet egy "AzureWebJobsMyStorage" nevű alkalmazás-beállítást keres.For example, if you set connection to "MyStorage", the Functions runtime looks for an app setting that is named "AzureWebJobsMyStorage." Ha üresen hagyja a connection értéket, a functions futtatókörnyezet az alapértelmezett tárolási kapcsolatok karakterláncát használja az AzureWebJobsStorage nevű alkalmazás-beállításban.If you leave connection empty, the Functions runtime uses the default Storage connection string in the app setting that is named AzureWebJobsStorage.

Ha helyileg fejleszt, Alkalmazásbeállítások lépnek a local.settings.json fájljában.When you're developing locally, app settings go into the local.settings.json file.

Kimenet – használatOutput - usage

A C# és C# a parancsfájlban írjon egy üzenetsor-üzenetet egy metódus-paraméter (például out T paramName) használatával.In C# and C# script, write a single queue message by using a method parameter such as out T paramName. A C# szkriptben paramName a function. JSONname tulajdonságában megadott érték.In C# script, paramName is the value specified in the name property of function.json. A metódus visszatérési típusát out paraméter helyett használhatja, és a T a következő típusok bármelyike lehet:You can use the method return type instead of an out parameter, and T can be any of the following types:

Ha CloudQueueMessage értékre próbál kötni, és hibaüzenetet kap, ellenőrizze, hogy rendelkezik-e a megfelelő Storage SDK-verzióramutató hivatkozással.If you try to bind to CloudQueueMessage and get an error message, make sure that you have a reference to the correct Storage SDK version.

A C# és C# a parancsfájlban több üzenetsor-üzenetet is írhat a következő típusok egyikének használatával:In C# and C# script, write multiple queue messages by using one of the following types:

A JavaScript-függvények területen a kimeneti üzenetsor üzenetének eléréséhez használja a context.bindings.<name> értéket.In JavaScript functions, use context.bindings.<name> to access the output queue message. A várólista-elem hasznos adatainak karakterláncot vagy JSON-szerializálható objektumot is használhat.You can use a string or a JSON-serializable object for the queue item payload.

Kivételek és visszatérési kódokExceptions and return codes

KötésBinding LeírásokReference
QueueQueue Üzenetsor-hibakódokQueue Error Codes
BLOB, tábla, üzenetsorBlob, Table, Queue Tárolási hibakódokStorage Error Codes
BLOB, tábla, üzenetsorBlob, Table, Queue hibaelhárítássalTroubleshooting

gazdagép. JSON-beállításokhost.json settings

Ez a szakasz a kötéshez elérhető globális konfigurációs beállításokat ismerteti a 2. x verzióban.This section describes the global configuration settings available for this binding in version 2.x. Az alábbi Host. JSON fájl csak a kötés 2. x verziójának beállításait tartalmazza.The example host.json file below contains only the version 2.x settings for this binding. A 2. x verziójú globális konfigurációs beállításokkal kapcsolatos további információkért lásd: Host. JSON-dokumentáció Azure functions 2. x verzióhoz.For more information about global configuration settings in version 2.x, see host.json reference for Azure Functions version 2.x.

Megjegyzés

Az 1. x függvények Host. JSON fájljának hivatkozását lásd: Host. JSON-dokumentáció Azure functions 1. x-hez.For a reference of host.json in Functions 1.x, see host.json reference for Azure Functions 1.x.

{
    "version": "2.0",
    "extensions": {
        "queues": {
            "maxPollingInterval": "00:00:02",
            "visibilityTimeout" : "00:00:30",
            "batchSize": 16,
            "maxDequeueCount": 5,
            "newBatchThreshold": 8
        }
    }
}
TulajdonságProperty AlapértelmezettDefault LeírásDescription
maxPollingIntervalmaxPollingInterval 00:00:0100:00:01 A várólista-lekérdezések közötti maximális időköz.The maximum interval between queue polls. Minimum 00:00:00.100 (100 MS), és legfeljebb 00:01:00 (1 perc) értékkel növekszik.Minimum is 00:00:00.100 (100 ms) and increments up to 00:01:00 (1 min). 1. x esetén az adattípus ezredmásodpercben, a 2. x-ben pedig egy TimeSpan.In 1.x the data type is milliseconds, and in 2.x it is a TimeSpan.
visibilityTimeoutvisibilityTimeout 00:00:0000:00:00 Az újrapróbálkozások között eltelt idő az üzenet feldolgozásakor.The time interval between retries when processing of a message fails.
batchSizebatchSize 1616 Azoknak a üzenetsor-üzeneteknek a száma, amelyeket a függvények futtatókörnyezete egyszerre kér le, és párhuzamosan dolgozza fel a folyamatokat.The number of queue messages that the Functions runtime retrieves simultaneously and processes in parallel. Ha a feldolgozandó szám a newBatchThreshold értékre kerül, a futtatókörnyezet egy másik köteget kap, és elindítja az üzenetek feldolgozását.When the number being processed gets down to the newBatchThreshold, the runtime gets another batch and starts processing those messages. Így a függvények által feldolgozott egyidejű üzenetek maximális száma @no__t – 0, newBatchThreshold.So the maximum number of concurrent messages being processed per function is batchSize plus newBatchThreshold. Ez a korlát külön vonatkozik az egyes üzenetsor-vezérelt függvényekre.This limit applies separately to each queue-triggered function.

Ha el szeretné kerülni az egyik várólistán fogadott üzenetek párhuzamos végrehajtását, beállíthatja batchSize és 1 közötti értéket.If you want to avoid parallel execution for messages received on one queue, you can set batchSize to 1. Ez a beállítás azonban csak akkor teszi feleslegessé a párhuzamosságot, ha a Function alkalmazás egyetlen virtuális gépen fut (VM).However, this setting eliminates concurrency only so long as your function app runs on a single virtual machine (VM). Ha a Function alkalmazás több virtuális gépre is kiterjed, minden egyes virtuális gép futtathatja az egyes üzenetsor által aktivált függvények egy példányát.If the function app scales out to multiple VMs, each VM could run one instance of each queue-triggered function.

A maximális @no__t – 0 32.The maximum batchSize is 32.
maxDequeueCountmaxDequeueCount 55 Azon alkalmak száma, amelyekkel az üzenetek feldolgozására kerül sor, mielőtt a rendszer áthelyezi azt a Megmérgező várólistára.The number of times to try processing a message before moving it to the poison queue.
newBatchThresholdnewBatchThreshold batchSize/2batchSize/2 Ha az egyidejűleg feldolgozható üzenetek száma leállítja ezt a számot, a futtatókörnyezet egy másik köteget kérdez le.Whenever the number of messages being processed concurrently gets down to this number, the runtime retrieves another batch.

Következő lépésekNext steps