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 l'associazione di output RabbitMQ per inviare messaggi a 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 @RabbitMQOutput dei tipi Java RabbitMQ per descrivere la configurazione per un'associazione di output della coda RabbitMQ. La funzione invia un messaggio alla coda RabbitMQ quando viene attivato da timerTrigger ogni 5 minuti.
@FunctionName("RabbitMQOutputExample")
public void run(
@TimerTrigger(name = "keepAliveTrigger", schedule = "0 */5 * * * *") String timerInfo,
@RabbitMQOutput(connectionStringSetting = "rabbitMQConnectionAppSetting", queueName = "hello") OutputBinding<String> output,
final ExecutionContext context) {
output.setValue("Some string");
}
L'esempio seguente mostra un'associazione di output RabbitMQ in un file function.json e una funzione JavaScript che usa l'associazione. La funzione legge il messaggio da un trigger HTTP e lo restituisce nella coda RabbitMQ.
Ecco i dati di associazione nel file function.json:
{
"bindings": [
{
"type": "httpTrigger",
"direction": "in",
"authLevel": "function",
"name": "input",
"methods": [
"get",
"post"
]
},
{
"type": "rabbitMQ",
"name": "outputMessage",
"queueName": "outputQueue",
"connectionStringSetting": "rabbitMQConnectionAppSetting",
"direction": "out"
}
]
}
Ecco il codice JavaScript:
module.exports = async function (context, input) {
context.bindings.outputMessage = input.body;
};
L'esempio seguente mostra un'associazione di output RabbitMQ in un file function.json e una funzione Python che usa l'associazione. La funzione legge il messaggio da un trigger HTTP e lo restituisce nella coda RabbitMQ.
Ecco i dati di associazione nel file function.json:
{
"scriptFile": "__init__.py",
"bindings": [
{
"authLevel": "function",
"type": "httpTrigger",
"direction": "in",
"name": "req",
"methods": [
"get",
"post"
]
},
{
"type": "http",
"direction": "out",
"name": "$return"
},
{
"type": "rabbitMQ",
"name": "outputMessage",
"queueName": "outputQueue",
"connectionStringSetting": "rabbitMQConnectionAppSetting",
"direction": "out"
}
]
}
In _init_.py:
import azure.functions as func
def main(req: func.HttpRequest, outputMessage: func.Out[str]) -> func.HttpResponse:
input_msg = req.params.get('message')
outputMessage.set(input_msg)
return 'OK'
Attributi
Sia il processo di lavoro isolato che le librerie C# in-process usano un attributo per definire un'associazione di output che scrive in una coda RabbitMQ.
Il RabbitMQOutputAttribute costruttore 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. |
| DisableCertificateValidation | Ottiene o imposta un valore che indica se la convalida del certificato deve essere disabilitata. Non consigliato per la produzione. Non si applica quando SSL è disabilitato. |
Annotazioni
L'annotazione RabbitMQOutput consente di creare una funzione che viene eseguita quando viene creato un messaggio RabbitMQ.
L'annotazione supporta le impostazioni di configurazione seguenti:
| Impostazione | 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 | Ottiene o imposta un valore che indica se la convalida del certificato deve essere disabilitata. 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 RabbitMQ. |
| direzione | Deve essere impostato su out. |
| nome | Nome della variabile che rappresenta la coda nel codice della funzione. |
| queueName | Nome della coda a cui inviare 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 | Ottiene o imposta un valore che indica se la convalida del certificato deve essere disabilitata. 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 versione del runtime di Funzioni, dalla versione del pacchetto di estensione e dalla modalità C# usata.
Le associazioni RabbitMQ supportano attualmente solo tipi di oggetto stringa e serializzabili quando vengono eseguiti in un processo di lavoro isolato.
Usare i tipi di parametro seguenti per l'associazione di output:
-
byte[]- Se il valore del parametro è Null quando la funzione viene chiusa, Funzioni non crea un messaggio. -
string- Se il valore del parametro è Null quando la funzione viene chiusa, Funzioni non crea un messaggio. -
POJO- Se il valore del parametro non è formattato come oggetto Java, verrà ricevuto un errore.
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.