Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Funzioni di Azure possibile creare nuovi messaggi di archiviazione code di Azure configurando un'associazione di output.
Per informazioni sui dettagli di impostazione e configurazione, vedere la panoramica.
Importante
Questo articolo usa schede per supportare le versioni diverse del modello di programmazione Node.js. Il modello v4 è disponibile a livello generale ed è progettato per offrire un'esperienza più flessibile e intuitiva per gli sviluppatori JavaScript e TypeScript. Per altre informazioni sul funzionamento del modello v4, vedere la guida per gli sviluppatori di Node.js per Funzioni di Azure. Altre informazioni sulle differenze tra i modelli v3 e v4 sono disponibili nella guida alla migrazione.
Funzioni di Azure supporta due modelli di programmazione per Python. Il modo in cui si definiscono le associazioni dipende dal modello di programmazione scelto.
Il modello di programmazione Python v2 consente di definire associazioni usando elementi Decorator direttamente nel codice della funzione Python. Per altre informazioni, vedere la Guida per sviluppatori Python.
Questo articolo supporta entrambi i modelli di programmazione.
Esempio
Il supporto Go non è attualmente disponibile per questo binding.
È possibile creare una funzione C# usando una delle modalità C# seguenti:
-
Modello di lavoro isolato: funzione C# compilata eseguita in un processo di lavoro isolato dal runtime. Il processo di lavoro isolato è necessario per supportare le funzioni C# in esecuzione in LTS e versioni non LTS .NET e .NET Framework. Le estensioni per le funzioni del processo di lavoro isolato usano
Microsoft.Azure.Functions.Worker.Extensions.*spazi dei nomi. -
Modello in-process: funzione C# compilata eseguita nello stesso processo del runtime di Funzioni. In una variante di questo modello, le funzioni possono essere eseguite usando script C#, che è supportato principalmente per la modifica del portale C#. Le estensioni per le funzioni in-process usano
Microsoft.Azure.WebJobs.Extensions.*spazi dei nomi.
Importante
Il supporto terminerà per il modello in-process il 10 novembre 2026. È consigliabile eseguire la migrazione delle app al modello di lavoro isolato per il supporto completo.
[Function(nameof(QueueInputOutputFunction))]
[QueueOutput("output-queue")]
public string[] QueueInputOutputFunction([QueueTrigger("input-queue")] Album myQueueItem, FunctionContext context)
{
// Use a string array to return more than one message.
string[] messages = {
$"Album name = {myQueueItem.Name}",
$"Album songs = {myQueueItem.Songs}"};
_logger.LogInformation("{msg1},{msg2}", messages[0], messages[1]);
// Queue Output messages
return messages;
}
Per un esempio end-to-end di come configurare un'associazione di output all'archiviazione code, vedere uno di questi articoli:
L'esempio seguente mostra una funzione Java che crea un messaggio di coda per quando viene attivato da una richiesta HTTP.
@FunctionName("httpToQueue")
@QueueOutput(name = "item", queueName = "myqueue-items", connection = "MyStorageConnectionAppSetting")
public String pushToQueue(
@HttpTrigger(name = "request", methods = {HttpMethod.POST}, authLevel = AuthorizationLevel.ANONYMOUS)
final String message,
@HttpOutput(name = "response") final OutputBinding<String> result) {
result.setValue(message + " has been added.");
return message;
}
Nella libreria di runtime di funzioni Java usare l'annotazione @QueueOutput per i parametri il cui valore viene scritto nell'archiviazione code. Il tipo di parametro deve essere OutputBinding<T>, dove T è qualsiasi tipo Java nativo di un POJO.
Per un esempio end-to-end di come configurare un'associazione di output all'archiviazione code, vedere uno di questi articoli:
L'esempio seguente mostra una funzione TypeScript attivata da HTTP che crea un elemento della coda per ogni richiesta HTTP ricevuta.
import { app, HttpRequest, HttpResponseInit, InvocationContext, output } from '@azure/functions';
const queueOutput = output.storageQueue({
queueName: 'outqueue',
connection: 'MyStorageConnectionAppSetting',
});
export async function httpTrigger1(request: HttpRequest, context: InvocationContext): Promise<HttpResponseInit> {
const body = await request.text();
context.extraOutputs.set(queueOutput, body);
return { body: 'Created queue item.' };
}
app.http('httpTrigger1', {
methods: ['GET', 'POST'],
authLevel: 'anonymous',
extraOutputs: [queueOutput],
handler: httpTrigger1,
});
Per restituire più messaggi, restituire una matrice anziché un singolo oggetto. Ad esempio:
context.extraOutputs.set(queueOutput, ['message 1', 'message 2']);
L'esempio seguente mostra una funzione JavaScript attivata da HTTP che crea un elemento della coda per ogni richiesta HTTP ricevuta.
const { app, output } = require('@azure/functions');
const queueOutput = output.storageQueue({
queueName: 'outqueue',
connection: 'MyStorageConnectionAppSetting',
});
app.http('httpTrigger1', {
methods: ['GET', 'POST'],
authLevel: 'anonymous',
extraOutputs: [queueOutput],
handler: async (request, context) => {
const body = await request.text();
context.extraOutputs.set(queueOutput, body);
return { body: 'Created queue item.' };
},
});
Per restituire più messaggi, restituire una matrice anziché un singolo oggetto. Ad esempio:
context.extraOutputs.set(queueOutput, ['message 1', 'message 2']);
Per un esempio end-to-end di come configurare un'associazione di output all'archiviazione code, vedere uno di questi articoli:
Gli esempi di codice seguenti illustrano come restituire un messaggio di coda da una funzione attivata da HTTP. La sezione di configurazione con l'oggetto type di definisce l'associazione di queue output.
{
"bindings": [
{
"authLevel": "anonymous",
"type": "httpTrigger",
"direction": "in",
"name": "Request",
"methods": [
"get",
"post"
]
},
{
"type": "http",
"direction": "out",
"name": "Response"
},
{
"type": "queue",
"direction": "out",
"name": "Msg",
"queueName": "outqueue",
"connection": "MyStorageConnectionAppSetting"
}
]
}
Usando questa configurazione di associazione, una funzione di PowerShell può creare un messaggio della coda usando Push-OutputBinding. In questo esempio viene creato un messaggio da una stringa di query o da un parametro del corpo.
using namespace System.Net
# Input bindings are passed in via param block.
param($Request, $TriggerMetadata)
# Write to the Azure Functions log stream.
Write-Host "PowerShell HTTP trigger function processed a request."
# Interact with query parameters or the body of the request.
$message = $Request.Query.Message
Push-OutputBinding -Name Msg -Value $message
Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{
StatusCode = 200
Body = "OK"
})
Per inviare più messaggi contemporaneamente, definire una matrice di messaggi e usare Push-OutputBinding per inviare messaggi all'associazione di output della coda.
using namespace System.Net
# Input bindings are passed in via param block.
param($Request, $TriggerMetadata)
# Write to the Azure Functions log stream.
Write-Host "PowerShell HTTP trigger function processed a request."
# Interact with query parameters or the body of the request.
$message = @("message1", "message2")
Push-OutputBinding -Name Msg -Value $message
Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{
StatusCode = 200
Body = "OK"
})
Per un esempio end-to-end di come configurare un'associazione di output all'archiviazione code, vedere uno di questi articoli:
Nell'esempio seguente viene illustrato come restituire valori singoli e multipli nelle code di archiviazione. La configurazione necessaria per function.json è identica. L'esempio dipende dal fatto che si usi il modello di programmazione Python v1 o v2.
import logging
import azure.functions as func
app = func.FunctionApp()
@app.function_name(name="QueueOutput1")
@app.route(route="message")
@app.queue_output(arg_name="msg",
queue_name="<QUEUE_NAME>",
connection="<CONNECTION_SETTING>")
def main(req: func.HttpRequest, msg: func.Out[str]) -> func.HttpResponse:
input_msg = req.params.get('name')
logging.info(input_msg)
msg.set(input_msg)
logging.info(f'name: {name}')
return 'OK'
Per un esempio end-to-end di come configurare un'associazione di output all'archiviazione code, vedere uno di questi articoli:
Attributi
L'attributo che definisce un'associazione di output nelle librerie C# dipende dalla modalità in cui viene eseguita la libreria di classi C#.
Quando si esegue in un processo di lavoro isolato, si usa QueueOutputAttribute, che accetta il nome della coda, come illustrato nell'esempio seguente:
[Function(nameof(QueueInputOutputFunction))]
[QueueOutput("output-queue")]
public string[] QueueInputOutputFunction([QueueTrigger("input-queue")] Album myQueueItem, FunctionContext context)
Durante l'esecuzione in un processo di lavoro isolato sono supportate solo le variabili restituite. Non è possibile usare i parametri di output.
Elementi Decorator
Si applica solo al modello di programmazione Python v2.
Per le funzioni Python v2 definite usando un elemento Decorator, le proprietà seguenti in queue_output:
| Proprietà | Descrizione |
|---|---|
arg_name |
Nome della variabile che rappresenta la coda nel codice della funzione. |
queue_name |
Nome della coda. |
connection |
Nome di un'impostazione o di una raccolta di impostazioni dell'app che specifica come connettersi alle Code di Azure. Vedere Connessioni. |
Per le funzioni Python definite tramite function.json, vedere la sezione Configurazione .
Annotazioni
L'annotazione QueueOutput consente di scrivere un messaggio come output di una funzione. L'esempio seguente mostra una funzione attivata da HTTP che crea un messaggio della coda.
package com.function;
import java.util.*;
import com.microsoft.azure.functions.annotation.*;
import com.microsoft.azure.functions.*;
public class HttpTriggerQueueOutput {
@FunctionName("HttpTriggerQueueOutput")
public HttpResponseMessage run(
@HttpTrigger(name = "req", methods = {HttpMethod.GET, HttpMethod.POST}, authLevel = AuthorizationLevel.FUNCTION) HttpRequestMessage<Optional<String>> request,
@QueueOutput(name = "message", queueName = "messages", connection = "MyStorageConnectionAppSetting") OutputBinding<String> message,
final ExecutionContext context) {
message.setValue(request.getQueryParameters().get("name"));
return request.createResponseBuilder(HttpStatus.OK).body("Done").build();
}
}
| Proprietà | Descrizione |
|---|---|
name |
Dichiara il nome del parametro nella firma della funzione. Quando la funzione viene attivata, il valore di questo parametro contiene il contenuto del messaggio della coda. |
queueName |
Dichiara il nome della coda nell'account di archiviazione. |
connection |
Punta all'account di archiviazione stringa di connessione. |
Il parametro associato all'annotazione QueueOutput viene tipizzato come istanza di OutputBinding<T> .
Impostazione
Si applica solo al modello di programmazione Python v1.
Nella tabella seguente vengono illustrate le proprietà che è possibile impostare sull'oggetto options passato al output.storageQueue() metodo .
| Proprietà | Descrizione |
|---|---|
| queueName | Nome della coda. |
| connessione | Nome di un'impostazione o di una raccolta di impostazioni dell'app che specifica come connettersi alle Code di Azure. Vedere Connessioni. |
Quando si sviluppa in locale, aggiungere le impostazioni dell'applicazione nel file local.settings.json nella Values raccolta.
Nella tabella seguente sono illustrate le proprietà di configurazione dell'associazione impostate nel file function.json.
| Proprietà di function.json | Descrizione |
|---|---|
| tipo | Deve essere impostato su queue. Questa proprietà viene impostata automaticamente quando si crea il trigger nel portale di Azure. |
| direzione | Deve essere impostato su out. Questa proprietà viene impostata automaticamente quando si crea il trigger nel portale di Azure. |
| nome | Nome della variabile che rappresenta la coda nel codice della funzione. Impostare su $return per fare riferimento al valore restituito della funzione. |
| queueName | Nome della coda. |
| connessione | Nome di un'impostazione o di una raccolta di impostazioni dell'app che specifica come connettersi alle Code di Azure. Vedere Connessioni. |
Quando si sviluppa in locale, aggiungere le impostazioni dell'applicazione nel file local.settings.json nella Values raccolta.
Per esempi completi, vedere la sezione di esempio.
Utilizzo
L'utilizzo dell'associazione di output coda dipende dalla versione del pacchetto di estensione e dalla modalità C# usata nell'app per le funzioni, che può essere una delle seguenti:
Una funzione C# compilata di libreria di classi di processo di lavoro viene eseguita in un processo isolato dal runtime.
Scegliere una versione per visualizzare i dettagli di utilizzo per la modalità e la versione.
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 queueClient con altri tipi direttamente da Azure.Storage.Queues. Vedere Registrare i client di Azure per un esempio di uso dell'inserimento delle dipendenze per creare un tipo di client da Azure SDK.
Sono disponibili due opzioni per scrivere in una coda da una funzione usando l'annotazione QueueOutput :
Valore restituito: applicando l'annotazione alla funzione stessa, il valore restituito della funzione viene scritto nella coda.
Imperativo: per impostare in modo esplicito il valore del messaggio, applicare l'annotazione a un parametro specifico del tipo
OutputBinding<T>, doveTè un POJO o qualsiasi tipo Java nativo. Con questa configurazione, il passaggio di un valore alsetValuemetodo scrive il valore nella coda.
Accedere all'elemento della coda di output restituendo il valore direttamente o usando context.extraOutputs.set(). È possibile usare una stringa o un oggetto serializzabile in JSON per il payload dell'elemento della coda.
L'output del messaggio della coda è disponibile tramite Push-OutputBinding il quale si passano argomenti che corrispondono al nome designato dal parametro dell'associazione name nel file function.json .
Sono disponibili due opzioni per la scrittura dalla funzione alla coda configurata:
Valore restituito: impostare la
nameproprietà in function.json su$return. Con questa configurazione, il valore restituito della funzione viene salvato in modo permanente come messaggio di archiviazione code.Imperativo: passare un valore al metodo set del parametro dichiarato come tipo Out . Il valore passato a
setviene salvato in modo permanente come messaggio di archiviazione code.
Il parametro della funzione di output deve essere definito come func.Out[func.QueueMessage], func.Out[str]o func.Out[bytes]. Per informazioni dettagliate, vedere l'esempio di output .
Connessioni
La connection proprietà è impostata come chiave nelle impostazioni dell'applicazione che restituisce un valore usato dal runtime Functions per collegarsi all'account di archiviazione usato dall'estensione. Il valore dell'impostazione della proprietà di connessione dipende dal tipo di connessione:
-
Connessione di identità gestita: La
connectionproprietà è<CONNECTION_NAME_PREFIX>condivisa da un gruppo di impostazioni che insieme definiscono una connessione basata sull'identità con l'account di archiviazione. Per ulteriori informazioni, vedi Definire connessioni identitari. -
Riferimento Key Vault: L'impostazione
connectionproprietà restituisce un riferimento Azure Key Vault alla posizione in cui la stringa di connessione è mantenuta centralmente. Per maggiori informazioni, vedi Definire le connessioni Key Vault. -
Riferimento App Configuration: L'impostazione
connectionproprietà restituisce un riferimento Configurazione app di Azure che restituisce una stringa di connessione o un riferimento a Key Vault. Per ulteriori informazioni, consulta Configurazione app di Azure nell'articolo sulle connessioni. -
Connection string: L'impostazione
connectionproprietà restituisce la stringa di connessione effettiva dell'account di storage. Poiché la stringa di connessione contiene chiavi segrete condivise, dovresti considerare l'uso di una connessione di identità gestita, quando possibile. Per maggiori informazioni, vedi Definisci le connessioni.
Per saperne di più sulle connessioni dei binding, consulta Gestire la connessione in Funzioni di Azure. Per ottenere una stringa di connessione, seguire la procedura descritta in Gestire le chiavi di accesso dell’account di archiviazione.
Quando imposti connection una chiave o un prefisso di chiave chiamato AzureWebJobsStorage o una stringa vuota, l'estensione di binding utilizza l'account di memoria host predefinito. Per maggiori informazioni, vedi Ottimizza le prestazioni di archiviazione.
Eccezioni e codici restituiti
| Vincolo | Riferimento |
|---|---|
| Coda | Codici di errore della coda |
| BLOB, tabella, coda | Codici di errore di archiviazione |
| BLOB, tabella, coda | Risoluzione dei problemi |