Partager via


Présentation du déclencheur RabbitMQ pour Azure Functions

Utilisez le déclencheur RabbitMQ pour répondre aux messages d’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 @RabbitMQTrigger des @RabbitMQTrigger pour décrire la configuration d’un déclencheur de file d’attente RabbitMQ. La fonction récupère le message placé dans la file d’attente et l’ajoute dans les journaux.

@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’exemple suivant montre une liaison de déclencheur RabbitMQ dans un fichier function.json et une fonction JavaScript qui utilise la liaison. La fonction lit et journalise un message RabbitMQ.

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

{​​
    "bindings": [
        {​​
            "name": "myQueueItem",
            "type": "rabbitMQTrigger",
            "direction": "in",
            "queueName": "queue",
            "connectionStringSetting": "rabbitMQConnectionAppSetting"
        }​​
    ]
}​​

Voici le code de script JavaScript :

module.exports = async function (context, myQueueItem) {​​
    context.log('JavaScript RabbitMQ trigger function processed work item', myQueueItem);
}​​;

L’exemple suivant montre comment lire un message de file d’attente RabbitMQ à l’aide d’un déclencheur.

Une liaison RabbitMQ est définie dans function.json, où le type est défini sur 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)

Les exemples PowerShell ne sont actuellement pas disponibles.

Attributs

Les bibliothèques C#et processus isolés permettent RabbitMQTriggerAttribute de définir la fonction, où des propriétés spécifiques de l’attribut dépendent de la version de l’extension.

Le constructeur de l’attribut accepte ces paramètres :

Paramètre Descriptif
Nom de la file d’attente 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.

Commentaires

L’annotation RabbitMQTrigger 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 options de configuration suivantes :

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 Valeur booléenne qui peut être définie pour true indiquer que la validation de certificat doit être désactivée. La valeur par défaut est false. 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 RabbitMQTrigger.
direction Cette propriété doit être définie sur in.
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 à 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 Valeur booléenne qui peut être définie pour true indiquer que la validation de certificat doit être désactivée. La valeur par défaut est false. 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 modalité C# utilisée.

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

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.

Files d’attente de lettres mortes

Les files d’attente de lettres mortes et les échanges ne peuvent pas être contrôlés ou configurés à partir du déclencheur RabbitMQ. Pour utiliser les files d’attente de lettres mortes, préconfigurez la file d’attente utilisée par le déclencheur dans RabbitMQ. Reportez-vous à la documentation de RabbitMQ.

Activer la mise à l’échelle du runtime

Pour permettre un scale-out du déclencheur RabbitMQ sur plusieurs instances, le paramètre de supervision de la mise à l’échelle du runtime doit être activé.

Dans le portail, ce paramètre se trouve sous Configuration>Paramètres d’exécution de la fonction pour votre application de fonction.

Bouton bascule de réseau virtuel

Dans Azure CLI, vous pouvez activer runtime Scale Monitoring à l’aide de cette commande :

az resource update -resource-group <RESOURCE_GROUP> -name <APP_NAME>/config/web \
    --set properties.functionsRuntimeScaleMonitoringEnabled=1 \
    --resource-type Microsoft.Web/sites

Surveillance d’un point de terminaison RabbitMQ

Pour surveiller vos files d’attente et échanges pour un certain point de terminaison RabbitMQ :

  • Activez le plug-in de gestion RabbitMQ.
  • Accédez et http://{node-hostname}:15672 connectez-vous avec votre nom d’utilisateur et votre mot de passe.

Article connexe