Partager via


Vue d’ensemble des liaisons de sortie RabbitMQ pour Azure Functions

Utilisez la liaison de sortie RabbitMQ pour envoyer des messages à une file d’attente RabbitMQ.

Remarque

Les liaisons RabbitMQ ne sont entièrement prises en charge que sur les plans Elastic Premium et Dedicated (App Service ). Les plans Flex Consumption et Consommation ne sont pas encore pris en charge.

Les liaisons RabbitMQ ne sont pas prises en charge par le runtime Azure Functions v1.x.

Pour plus d’informations sur les détails d’installation et de configuration, consultez la vue d’ensemble.

Exemple

Vous pouvez créer une fonction C# à l’aide de l’un des modes C# suivants :

  • Modèle worker isolé : fonction C# compilée exécutée dans un processus worker isolé du runtime. Un processus de travail isolé est nécessaire pour prendre en charge les fonctions C# s’exécutant sur la prise en charge à long terme (LTS) et les versions non LTS pour .NET et .NET Framework.
  • Modèle in-process : fonction C# compilée qui s’exécute dans le même processus que le runtime Azure Functions.
  • Script C# : principalement utilisé lors de la création de fonctions C# dans le portail Azure.

Important

La prise en charge du modèle in-process prendra fin le 10 novembre 2026. Pour continuer à bénéficier d’une prise en charge complète, nous vous recommandons vivement de migrer vos applications vers le modèle worker isolé.

[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 fonction Java suivante utilise l’annotation @RabbitMQOutput des @RabbitMQOutput pour décrire la configuration d’une liaison de sortie de file d’attente RabbitMQ. La fonction envoie un message à la file d’attente RabbitMQ quand elle est déclenchée par un TimerTrigger toutes les 5 minutes.

@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’exemple suivant montre une liaison de sortie RabbitMQ dans un fichier function.json, et une fonction JavaScript qui utilise la liaison. La fonction lit le message d’un déclencheur HTTP et l’envoie à la file d’attente RabbitMQ.

Voici les données de liaison dans le fichier function.json :

{
    "bindings": [
        {
            "type": "httpTrigger",
            "direction": "in",
            "authLevel": "function",
            "name": "input",
            "methods": [
                "get",
                "post"
            ]
        },
        {
            "type": "rabbitMQ",
            "name": "outputMessage",
            "queueName": "outputQueue",
            "connectionStringSetting": "rabbitMQConnectionAppSetting",
            "direction": "out"
        }
    ]
}

Voici le code JavaScript :

module.exports = async function (context, input) {
    context.bindings.outputMessage = input.body;
};

L’exemple suivant montre une liaison de sortie RabbitMQ dans un fichier function.json, et une fonction Python qui utilise la liaison. La fonction lit le message d’un déclencheur HTTP et l’envoie à la file d’attente RabbitMQ.

Voici les données de liaison dans le fichier 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"
        }
    ]
}

Dans _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'

Attributs

Les bibliothèques C# et processus isolés utilisent un attribut pour définir une liaison de sortie qui écrit dans une file d’attente RabbitMQ.

Le RabbitMQOutputAttribute constructeur accepte ces paramètres :

Paramètre Descriptif
QueueName Nom de la file d’attente à partir de laquelle les messages sont envoyés.
Nom d’hôte Ce paramètre n’est plus pris en charge et est ignoré. Elle sera supprimée dans une version ultérieure.
ConnectionStringSetting Nom du paramètre d’application qui contient la chaîne de connexion de votre serveur RabbitMQ. Ce paramètre ne prend qu’un nom de clé de paramètre d’application, vous ne pouvez pas définir directement une valeur de chaîne de connexion. Pour plus d’informations, consultez Connexions.
UserNameSetting Ce paramètre n’est plus pris en charge et est ignoré. Elle sera supprimée dans une version ultérieure.
Paramètre de mot de passe Ce paramètre n’est plus pris en charge et est ignoré. Elle sera supprimée dans une version ultérieure.
Port Obtient ou définit le port utilisé. La valeur par défaut est 0. Elle pointe vers le paramètre de port par défaut du client RabbitMQ, à savoir 5672.
DisableCertificateValidation Obtient ou définit une valeur indiquant si la validation de certificat doit être désactivée. Non recommandé pour la production. Ne s’applique pas lorsque SSL est désactivé.

Commentaires

L’annotation RabbitMQOutput vous permet de créer une fonction qui s’exécute lors de la création d’un message RabbitMQ.

L’annotation prend en charge les paramètres de configuration suivants :

Paramètre Descriptif
queueName Nom de la file d’attente à partir de laquelle les messages sont envoyés.
connectionStringSetting Nom du paramètre d’application qui contient la chaîne de connexion de votre serveur RabbitMQ. Ce paramètre ne prend qu’un nom de clé de paramètre d’application, vous ne pouvez pas définir directement une valeur de chaîne de connexion. Pour plus d’informations, consultez Connexions.
disableCertificateValidation Obtient ou définit une valeur indiquant si la validation de certificat doit être désactivée. Non recommandé pour la production. Ne s’applique pas lorsque SSL est désactivé.

Paramétrage

Le tableau suivant décrit les propriétés de configuration de liaison que vous définissez dans le fichier function.json.

Propriété function.json Descriptif
type Cette propriété doit être définie sur RabbitMQ.
direction Cette propriété doit être définie sur out.
nom Nom de la variable qui représente la file d’attente dans le code de la fonction.
queueName Nom de la file d’attente à laquelle envoyer les messages.
connectionStringSetting Nom du paramètre d’application qui contient la chaîne de connexion de votre serveur RabbitMQ. Ce paramètre ne prend qu’un nom de clé de paramètre d’application, vous ne pouvez pas définir directement une valeur de chaîne de connexion. Pour plus d’informations, consultez Connexions.
disableCertificateValidation Obtient ou définit une valeur indiquant si la validation de certificat doit être désactivée. Non recommandé pour la production. Ne s’applique pas lorsque SSL est désactivé.

Lorsque vous développez en local, ajoutez vos paramètres d’application dans le fichier local.settings.json de la collection Values.

Pour obtenir des exemples complets, consultez la section Exemple.

Utilisation

Le type de paramètre pris en charge par le déclencheur RabbitMQ dépend de la version du runtime Functions, de la version du package d’extension et de la modalité C# utilisée.

Les liaisons RabbitMQ prennent actuellement en charge uniquement les types d’objets string et mis en série lorsqu’elles sont exécutées dans un processus worker isolé.

Utilisez les types de paramètres suivants pour la liaison de sortie :

  • byte[] : Si la valeur du paramètre est Null à la sortie de la fonction, Functions ne crée pas de message.
  • string : Si la valeur du paramètre est Null à la sortie de la fonction, Functions ne crée pas de message.
  • POJO - Si la valeur du paramètre n’est pas formatée en tant qu’objet Java, une erreur est reçue.

Le message de la file d’attente est disponible via context.bindings.<NAME>, où <NAME> correspond au nom défini dans function.json. Si la charge utile est JSON, la valeur est désérialisée en objet.

Connections

Important

La liaison RabbitMQ ne prend pas en charge l’authentification Microsoft Entra et les identités managées. Vous pouvez utiliser Azure Key Vault pour gérer de manière centralisée vos chaîne de connexion RabbitMQ. Pour plus d’informations, consultez Gérer les connexions.

À compter de la version 2.x de l’extension, hostNameet passwordSettinguserNameSettingne sont plus prises en charge pour définir une connexion au serveur RabbitMQ. Vous devez utiliser connectionStringSettingà la place .

La connectionStringSetting propriété ne peut accepter que le nom d’une paire clé-valeur dans les paramètres de l’application. Vous ne pouvez pas définir directement une valeur de chaîne de connexion dans la liaison.

Par exemple, lorsque vous avez défini connectionStringSettingrabbitMQConnection sur votre définition de liaison, votre application de fonction doit avoir un paramètre d’application nommé rabbitMQConnection qui retourne une valeur de connexion comme amqp://myuser:***@contoso.rabbitmq.example.com:5672 ou une référence Azure Key Vault.

Lors de l’exécution locale, vous devez également avoir la valeur de clé pour connectionStringSetting définie dans votre fichier local.settings.json . Sinon, votre application ne peut pas se connecter au service à partir de votre ordinateur local et une erreur se produit.