Trigger e associazioni di Archiviazione code di Azure per Funzioni di Azure panoramica

Funzioni di Azure possono essere eseguiti man mano che vengono creati nuovi messaggi di archiviazione code di Azure e possono scrivere messaggi in coda all'interno di una funzione.

Azione Type
Eseguire una funzione come modifiche ai dati di archiviazione code Trigger
Scrivere messaggi di archiviazione code Associazione di output

Installare l'estensione

Il pacchetto NuGet di estensione installato dipende dalla modalità C# usata nell'app per le funzioni:

Le funzioni sono eseguite in un processo di lavoro C# isolato. Per altre informazioni, vedere Guida per l'esecuzione di Funzioni di Azure C# in un processo di lavoro isolato.

La funzionalità dell'estensione varia a seconda della versione dell'estensione:

Questa versione introduce la possibilità di connettersi usando un'identità anziché un segreto. Per un'esercitazione sulla configurazione delle app per le funzioni con identità gestite, vedere l'esercitazione sulla creazione di un'app per le funzioni con connessioni basate su identità.

Questa versione consente di eseguire il binding ai tipi da Azure.Archiviazione. Code.

Aggiungere l'estensione al progetto installando il pacchetto NuGet versione 5.x.

Uso dell'interfaccia della riga di comando di .NET:

dotnet add package Microsoft.Azure.Functions.Worker.Extensions.Storage.Queues --version 5.0.0

Nota

I BLOB di Azure, le code di Azure e le tabelle di Azure ora usano estensioni separate e fanno riferimento singolarmente. Ad esempio, per usare i trigger e le associazioni per tutti e tre i servizi nell'app con processo isolato .NET, è necessario aggiungere i pacchetti seguenti al progetto:

In precedenza, le estensioni fornite insieme come Microsoft.Azure.Functions.Worker.Extensions.Archiviazione, versione 4.x. Questo stesso pacchetto ha anche una versione 5.x, che fa riferimento solo ai pacchetti divisi per BLOB e code. Quando si aggiornano i riferimenti al pacchetto da versioni precedenti, potrebbe quindi essere necessario fare riferimento al nuovo pacchetto NuGet Microsoft.Azure.Functions.Worker.Extensions.Tables . Inoltre, quando si fa riferimento a questi pacchetti di divisione più recenti, assicurarsi di non fare riferimento a una versione precedente del pacchetto di archiviazione combinato, in quanto ciò comporterà conflitti da due definizioni delle stesse associazioni.

Installare il bundle

L'associazione di archiviazione BLOB fa parte di un bundle di estensione, specificato nel file di progetto host.json. Potrebbe essere necessario modificare questo bundle per modificare la versione dell'associazione o se i bundle non sono già installati. Per altre informazioni, vedere bundle di estensioni.

Questa versione introduce la possibilità di connettersi usando un'identità anziché un segreto. Per un'esercitazione sulla configurazione delle app per le funzioni con identità gestite, vedere l'esercitazione sulla creazione di un'app per le funzioni con connessioni basate su identità.

È possibile aggiungere questa versione dell'estensione dal bundle dell'estensione di anteprima v3 aggiungendo o sostituendo il codice seguente nel host.json file:

{
    "version": "2.0",
    "extensionBundle": {
        "id": "Microsoft.Azure.Functions.ExtensionBundle",
        "version": "[3.3.0, 4.0.0)"
    }
}

Per altre informazioni, vedere Aggiornare le estensioni.

Tipi di associazioni

I tipi di associazione supportati per .NET dipendono sia dalla versione dell'estensione che dalla modalità di esecuzione C#, che può essere una delle seguenti:

Una libreria di classi di processo di lavoro isolata compilata C# viene eseguita in un processo isolato dal runtime.

Scegliere una versione per visualizzare i dettagli del tipo di associazione per la modalità e la versione.

Il processo di lavoro isolato supporta i tipi di parametro in base alle tabelle seguenti. Supporto per l'associazione ai tipi da Azure.Archiviazione. Le code sono in anteprima.

Trigger della coda

Il trigger della coda può essere associato ai tipi seguenti:

Tipo Descrizione
string Contenuto del messaggio come stringa. Usare quando il messaggio è testo semplice.
byte[] Byte del messaggio.
Tipi serializzabili JSON Quando un messaggio della coda contiene dati JSON, Funzioni tenta di deserializzare i dati JSON in un tipo POCO (Plain-Old CLR Object).
QueueMessage1 Messaggio.
BinaryData1 Byte del messaggio.

1 Per usare questi tipi, è necessario fare riferimento a Microsoft.Azure.Functions.Worker.Extensions.Archiviazione. Accoda la versione 5.2.0 o successiva e le dipendenze comuni per le associazioni dei tipi di SDK.

Associazione di output della coda

Quando si vuole che la funzione scriva un singolo messaggio, l'associazione di output della coda può essere associata ai tipi seguenti:

Tipo Descrizione
string Contenuto del messaggio come stringa. Usare quando il messaggio è testo semplice.
byte[] Byte del messaggio.
Tipi serializzabili JSON Oggetto che rappresenta il contenuto di un messaggio JSON. Funzioni tenta di serializzare un tipo di oggetto CLR (POCO) normale in dati JSON.

Quando si vuole che la funzione scriva più messaggi, l'associazione di output della coda può essere associata ai tipi seguenti:

Tipo Descrizione
T[] dove T è uno dei singoli tipi di messaggio Matrice contenente contenuto per più messaggi. Ogni voce rappresenta un messaggio.

Per altri scenari di output, creare e usare tipi da Azure.Archiviazione. Code direttamente.

impostazioni host.json

Questa sezione descrive le impostazioni di configurazione disponibili per questa associazione nelle versioni 2.x e successive. Impostazioni nel file host.json si applicano a tutte le funzioni in un'istanza dell'app per le funzioni. L'esempio host.json file seguente contiene solo le impostazioni della versione 2.x+ per questa associazione. Per altre informazioni sulle impostazioni di configurazione delle app per le funzioni nelle versioni 2.x e successive, vedere informazioni di riferimento host.json per Funzioni di Azure.

Nota

Per informazioni di riferimento su host.json in Funzioni 1.x, vedere Informazioni di riferimento su host.json per Funzioni di Azure 1.x.

{
    "version": "2.0",
    "extensions": {
        "queues": {
            "maxPollingInterval": "00:00:02",
            "visibilityTimeout" : "00:00:30",
            "batchSize": 16,
            "maxDequeueCount": 5,
            "newBatchThreshold": 8,
            "messageEncoding": "base64"
        }
    }
}
Proprietà Predefinito Descrizione
maxPollingInterval 00:01:00 L'intervallo massimo tra i polling di coda. L'intervallo minimo è 00:00:00.100 (100 ms). Gli intervalli aumentano fino a maxPollingInterval. Il valore predefinito di maxPollingInterval è 00:01:00 (1 min). maxPollingInterval non deve essere minore di 00:00:00.100 (100 ms). In Funzioni 2.x e versioni successive il tipo di dati è .TimeSpan In Funzioni 1.x è espresso in millisecondi.
visibilityTimeout 00:00:00 L'intervallo di tempo tra i tentativi se l'elaborazione di un messaggio ha esito negativo.
batchSize 16 Il numero di messaggi in coda che il runtime di Funzioni recupera simultaneamente e di processi in parallelo. Quando il numero elaborato viene ridotto a newBatchThreshold, il runtime ottiene un altro batch e inizia l'elaborazione dei messaggi. Di conseguenza, il numero massimo di messaggi simultanei elaborati per ogni funzione è batchSize più newBatchThreshold. Questo limite si applica separatamente a ogni funzione attivata dalla coda.

Se si vuole evitare l'esecuzione in parallelo per i messaggi ricevuti su una coda, è possibile impostare batchSize su 1. Tuttavia, questa impostazione elimina la concorrenza purché l'app per le funzioni venga eseguita solo in una singola macchina virtuale (VM). Se l'app per le funzioni scala orizzontalmente più macchine virtuali, ogni macchina virtuale potrebbe eseguire un'istanza di ogni funzione attivata dalla coda.

Il valore massimo per batchSize è 32.
maxDequeueCount 5 Il numero di volte per provare l'elaborazione di un messaggio prima di essere spostato nella coda non elaborabile.
newBatchThreshold N*batchSize/2 Ogni volta che il numero di messaggi elaborati simultaneamente viene ridotto a questo numero, il runtime recupera un altro batch.

Nrappresenta il numero di vCPU disponibili durante l'esecuzione in servizio app o piani Premium. Il valore è 1 relativo al piano a consumo.
messageEncoding base64 Questa impostazione è disponibile solo nel bundle di estensione versione 5.0.0 e successive. Rappresenta il formato di codifica per i messaggi. I valori validi sono base64 e none.

Passaggi successivi