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.
Usare il trigger RabbitMQ per rispondere ai messaggi da una coda RabbitMQ.
Nota
Le associazioni RabbitMQ sono completamente supportate solo nei piani Elastic Premium e Dedicated (servizio app). I piani Flex Consumption e Consumption non sono ancora supportati.
Le associazioni RabbitMQ non sono supportate dal runtime Funzioni di Azure v1.x.
Per informazioni sui dettagli di impostazione e configurazione, vedere la panoramica.
Esempio
È 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. È necessario un processo di lavoro isolato per supportare le funzioni C# in esecuzione su versioni LTS (Long-Term Support) e non LTS per .NET e .NET Framework.
- Modello in-process: funzione C# compilata eseguita nello stesso processo del runtime di Funzioni di Azure.
- Script C#: usato principalmente quando si creano funzioni C# nel portale di Azure.
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(RabbitMQFunction))]
[RabbitMQOutput(QueueName = "destinationQueue", ConnectionStringSetting = "RabbitMQConnection")]
public static string Run([RabbitMQTrigger("queue", ConnectionStringSetting = "RabbitMQConnection")] string item,
FunctionContext context)
{
var logger = context.GetLogger(nameof(RabbitMQFunction));
logger.LogInformation(item);
var message = $"Output message created at {DateTime.Now}";
return message;
}
La funzione Java seguente usa l'annotazione @RabbitMQTrigger dei tipi Java RabbitMQ per descrivere la configurazione per un trigger di coda RabbitMQ. La funzione afferra il messaggio inserito nella coda e lo aggiunge ai log.
@FunctionName("RabbitMQTriggerExample")
public void run(
@RabbitMQTrigger(connectionStringSetting = "rabbitMQConnectionAppSetting", queueName = "queue") String input,
final ExecutionContext context)
{
context.getLogger().info("Java HTTP trigger processed a request." + input);
}
L'esempio seguente mostra un'associazione di trigger RabbitMQ in un file function.json e una funzione JavaScript che usa l'associazione. La funzione legge e registra un messaggio RabbitMQ.
Ecco i dati di associazione nel file function.json:
{
"bindings": [
{
"name": "myQueueItem",
"type": "rabbitMQTrigger",
"direction": "in",
"queueName": "queue",
"connectionStringSetting": "rabbitMQConnectionAppSetting"
}
]
}
Ecco il codice script JavaScript:
module.exports = async function (context, myQueueItem) {
context.log('JavaScript RabbitMQ trigger function processed work item', myQueueItem);
};
Nell'esempio seguente viene illustrato come leggere un messaggio della coda RabbitMQ tramite un trigger.
Un'associazione RabbitMQ viene definita in function.json dove il tipo è impostato su RabbitMQTrigger.
{
"scriptFile": "__init__.py",
"bindings": [
{
"name": "myQueueItem",
"type": "rabbitMQTrigger",
"direction": "in",
"queueName": "queue",
"connectionStringSetting": "rabbitMQConnectionAppSetting"
}
]
}
import logging
import azure.functions as func
def main(myQueueItem) -> None:
logging.info('Python RabbitMQ trigger function processed a queue item: %s', myQueueItem)
Gli esempi di PowerShell non sono attualmente disponibili.
Attributi
Sia il processo di lavoro isolato che le librerie C# in-process usano RabbitMQTriggerAttribute per definire la funzione, in cui le proprietà specifiche dell'attributo dipendono dalla versione dell'estensione.
Il costruttore dell'attributo accetta questi parametri:
| Parametro | Descrizione |
|---|---|
| QueueName | Nome della coda da cui ricevere messaggi. |
| HostName | Questo parametro non è più supportato e viene ignorato. Verrà rimosso in una versione futura. |
| ConnectionStringSetting | Nome dell'impostazione dell'app che contiene la stringa di connessione per il server RabbitMQ. Questa impostazione accetta solo il nome della chiave dell'impostazione dell'app, non è possibile impostare direttamente un valore della stringa di connessione. Per altre informazioni, vedere Connessioni. |
| Impostazione NomeUtente | Questo parametro non è più supportato e viene ignorato. Verrà rimosso in una versione futura. |
| Impostazione della password | Questo parametro non è più supportato e viene ignorato. Verrà rimosso in una versione futura. |
| Porta | Ottiene o imposta la porta utilizzata. Il valore predefinito è 0, che punta all'impostazione predefinita della porta del client RabbitMQ di 5672. |
Annotazioni
L'annotazione RabbitMQTrigger consente di creare una funzione che viene eseguita quando viene creato un messaggio RabbitMQ.
L'annotazione supporta le opzioni di configurazione seguenti:
| Parametro | Descrizione |
|---|---|
| queueName | Nome della coda da cui ricevere messaggi. |
| connectionStringSetting | Nome dell'impostazione dell'app che contiene la stringa di connessione per il server RabbitMQ. Questa impostazione accetta solo il nome della chiave dell'impostazione dell'app, non è possibile impostare direttamente un valore della stringa di connessione. Per altre informazioni, vedere Connessioni. |
| disableCertificateValidation | Valore booleano che può essere impostato su true per indicare che la convalida del certificato deve essere disabilitata. Il valore predefinito è false. Non consigliato per la produzione. Non si applica quando SSL è disabilitato. |
Impostazione
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 RabbitMQTrigger. |
| direzione | Deve essere impostato su in. |
| nome | Nome della variabile che rappresenta la coda nel codice della funzione. |
| queueName | Nome della coda da cui ricevere messaggi. |
| connectionStringSetting | Nome dell'impostazione dell'app che contiene la stringa di connessione per il server RabbitMQ. Questa impostazione accetta solo il nome della chiave dell'impostazione dell'app, non è possibile impostare direttamente un valore della stringa di connessione. Per altre informazioni, vedere Connessioni. |
| disableCertificateValidation | Valore booleano che può essere impostato su true per indicare che la convalida del certificato deve essere disabilitata. Il valore predefinito è false. Non consigliato per la produzione. Non si applica quando SSL è disabilitato. |
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
Il tipo di parametro supportato dal trigger RabbitMQ dipende dalla modalità C# usata.
Le associazioni RabbitMQ supportano attualmente solo tipi di oggetto stringa e serializzabili durante l'esecuzione in un processo isolato.
Il messaggio della coda è disponibile tramite context.bindings.<NAME> dove <NAME> corrisponde al nome definito in function.json. Se il payload è JSON, il valore viene deserializzato in un oggetto .
Connections
Importante
L'associazione RabbitMQ non supporta l'autenticazione e le identità gestite di Microsoft Entra. È possibile usare Azure Key Vault per gestire centralmente i stringa di connessione RabbitMQ. Per altre informazioni, vedere Gestire le connessioni.
A partire dalla versione 2.x dell'estensione , hostNameuserNameSetting, e passwordSetting non sono più supportati per definire una connessione al server RabbitMQ. È invece necessario usare connectionStringSetting.
La connectionStringSetting proprietà può accettare solo il nome di una coppia chiave-valore nelle impostazioni dell'app. Non è possibile impostare direttamente un valore della stringa di connessione nell'associazione.
Ad esempio, quando è stato impostato su connectionStringSettingrabbitMQConnection nella definizione di associazione, l'app per le funzioni deve avere un'impostazione dell'app denominata rabbitMQConnection che restituisce un valore di connessione come amqp://myuser:***@contoso.rabbitmq.example.com:5672 o un riferimento ad Azure Key Vault.
Quando si esegue localmente, è necessario avere anche il valore della chiave per connectionStringSetting definito nel file local.settings.json . In caso contrario, l'app non può connettersi al servizio dal computer locale e si verifica un errore.
Code di messaggi non recapitabili
Le code e gli scambi di messaggi non recapitabili non possono essere controllati o configurati dal trigger RabbitMQ. Per usare code di messaggi non recapitabili, preconfigurare la coda usata dal trigger in RabbitMQ. Fare riferimento alla documentazione di RabbitMQ.
Abilitare il ridimensionamento del runtime
Per consentire al trigger RabbitMQ di aumentare il numero di istanze, è necessario abilitare l'impostazione Monitoraggio scalabilità di runtime.
Nel portale questa impostazione è disponibile in Impostazioni di runtime della funzione di configurazione>per l'app per le funzioni.
Nell'interfaccia della riga di comando di Azure è possibile abilitare Il monitoraggio della scalabilità di runtime usando questo comando:
az resource update -resource-group <RESOURCE_GROUP> -name <APP_NAME>/config/web \
--set properties.functionsRuntimeScaleMonitoringEnabled=1 \
--resource-type Microsoft.Web/sites
Monitoraggio di un endpoint RabbitMQ
Per monitorare le code e gli scambi per un determinato endpoint RabbitMQ:
- Abilitare il plug-in di gestione RabbitMQ
- Passare a
http://{node-hostname}:15672e accedere con il nome utente e la password.