Liaisons Azure Service Bus pour Azure FunctionsAzure Service Bus bindings for Azure Functions

Cet article explique comment utiliser des liaisons Azure Service Bus dans Azure Functions.This article explains how to work with Azure Service Bus bindings in Azure Functions. Azure Functions prend en charge les liaisons de déclencheur et de sortie pour les files d’attente et les rubriques Service Bus.Azure Functions supports trigger and output bindings for Service Bus queues and topics.

Il s’agit des informations de référence pour les développeurs Azure Functions.This is reference information for Azure Functions developers. Si vous ne connaissez pas bien Azure Functions, commencez par consulter les ressources suivantes :If you're new to Azure Functions, start with the following resources:

Packages - Functions 1.xPackages - Functions 1.x

Les liaisons Service Bus sont fournies dans le package NuGet Microsoft.Azure.WebJobs.ServiceBus, version 2.x.The Service Bus bindings are provided in the Microsoft.Azure.WebJobs.ServiceBus NuGet package, version 2.x.

Le tableau suivant indique comment ajouter la prise en charge de cette liaison dans chaque environnement de développement.The following table tells how to add support for this binding in each development environment.

Environnement de développementDevelopment environment Pour ajouter la prise en charge dansTo add support in
Functions 1.xFunctions 1.x
Développement local - Bibliothèque de classes C#Local development - C# class library Installer le package.Install the package
Développement local - Script C#, JavaScript, F#Local development - C# script, JavaScript, F# AutomatiqueAutomatic
Développement sur le portailPortal development AutomatiqueAutomatic

Packages – Functions 2.x et versions ultérieuresPackages - Functions 2.x and higher

Les liaisons Service Bus sont fournies dans le package NuGet Microsoft.Azure.WebJobs.Extensions.ServiceBus, version 3.x.The Service Bus bindings are provided in the Microsoft.Azure.WebJobs.Extensions.ServiceBus NuGet package, version 3.x. Le code source pour le package se trouve dans le référentiel azure-functions-servicebus-extension GitHub.Source code for the package is in the azure-functions-servicebus-extension GitHub repository.

Notes

Les versions 2.x et ultérieures ne créent pas la rubrique ni l’abonnement configurés dans l’instance ServiceBusTrigger.Versions 2.x and higher do not create the topic or subscription configured in the ServiceBusTrigger instance. Ces versions sont basées sur Microsoft.Azure.ServiceBus, qui ne gère pas les files d’attente.These versions are based on Microsoft.Azure.ServiceBus which doesn’t handle queue management.

Le tableau suivant indique comment ajouter la prise en charge de cette liaison dans chaque environnement de développement.The following table tells how to add support for this binding in each development environment.

Environnement de développementDevelopment environment Pour ajouter la prise en chargeTo add support
Développement local - Bibliothèque de classes C#Local development - C# class library Installer le package.Install the package
Développement local - Script C#, JavaScript, F#, Java et PythonLocal development - C# script, JavaScript, F#, Java and Python Enregistrer l’extensionRegister the extension
Développement sur le portailPortal development Installer lors de l’ajout d’une liaison de sortieInstall when adding output binding

Pour apprendre comment mettre à jour les extensions de liaison existantes dans le portail sans avoir à republier votre projet d'application de fonction, voir Mettre à jour vos extensions.To learn how to update existing binding extensions in the portal without having to republish your function app project, see Update your extensions.

DéclencheurTrigger

Utilisez le déclencheur Service Bus pour répondre aux messages provenant d'une file d’attente ou d'une rubrique Service Bus.Use the Service Bus trigger to respond to messages from a Service Bus queue or topic.

Déclencheur - exempleTrigger - example

Consultez l’exemple propre à un langage particulier :See the language-specific example:

Déclencheur - exemple C#Trigger - C# example

L’exemple suivant montre une fonction C# qui lit les métadonnées du message et consigne un message de la file d’attente Service Bus :The following example shows a C# function that reads message metadata and logs a Service Bus queue message:

[FunctionName("ServiceBusQueueTriggerCSharp")]                    
public static void Run(
    [ServiceBusTrigger("myqueue", Connection = "ServiceBusConnection")] 
    string myQueueItem,
    Int32 deliveryCount,
    DateTime enqueuedTimeUtc,
    string messageId,
    ILogger log)
{
    log.LogInformation($"C# ServiceBus queue trigger function processed message: {myQueueItem}");
    log.LogInformation($"EnqueuedTimeUtc={enqueuedTimeUtc}");
    log.LogInformation($"DeliveryCount={deliveryCount}");
    log.LogInformation($"MessageId={messageId}");
}

Déclencheur - exemple Script C#Trigger - C# script example

L’exemple suivant montre une liaison de déclencheur Service Bus dans un fichier function.json et une fonction de script C# qui utilise la liaison.The following example shows a Service Bus trigger binding in a function.json file and a C# script function that uses the binding. La fonction lit les métadonnées du message et consigne un message de la file d’attente Service Bus.The function reads message metadata and logs a Service Bus queue message.

Voici les données de liaison dans le fichier function.json :Here's the binding data in the function.json file:

{
"bindings": [
    {
    "queueName": "testqueue",
    "connection": "MyServiceBusConnection",
    "name": "myQueueItem",
    "type": "serviceBusTrigger",
    "direction": "in"
    }
],
"disabled": false
}

Voici le code Script C# :Here's the C# script code:

using System;

public static void Run(string myQueueItem,
    Int32 deliveryCount,
    DateTime enqueuedTimeUtc,
    string messageId,
    TraceWriter log)
{
    log.Info($"C# ServiceBus queue trigger function processed message: {myQueueItem}");

    log.Info($"EnqueuedTimeUtc={enqueuedTimeUtc}");
    log.Info($"DeliveryCount={deliveryCount}");
    log.Info($"MessageId={messageId}");
}

Déclencheur - exemple F#Trigger - F# example

L’exemple suivant montre une liaison de déclencheur Service Bus dans un fichier function.json et une fonction F# qui utilise la liaison.The following example shows a Service Bus trigger binding in a function.json file and an F# function that uses the binding. La fonction consigne un message de la file d’attente Service Bus.The function logs a Service Bus queue message.

Voici les données de liaison dans le fichier function.json :Here's the binding data in the function.json file:

{
"bindings": [
    {
    "queueName": "testqueue",
    "connection": "MyServiceBusConnection",
    "name": "myQueueItem",
    "type": "serviceBusTrigger",
    "direction": "in"
    }
],
"disabled": false
}

Voici le code de script F# :Here's the F# script code:

let Run(myQueueItem: string, log: ILogger) =
    log.LogInformation(sprintf "F# ServiceBus queue trigger function processed message: %s" myQueueItem)

Déclencheur - exemple JavaTrigger - Java example

La fonction Java suivante utilise l’annotation @ServiceBusQueueTrigger provenant de la bibliothèque runtime de fonctions Java afin de décrire la configuration d’un déclencheur de file d’attente Service Bus.The following Java function uses the @ServiceBusQueueTrigger annotation from the Java functions runtime library to describe the configuration for a Service Bus queue trigger. La fonction récupère le message placé dans la file d’attente et l’ajoute dans les journaux.The function grabs the message placed on the queue and adds it to the logs.

@FunctionName("sbprocessor")
 public void serviceBusProcess(
    @ServiceBusQueueTrigger(name = "msg",
                             queueName = "myqueuename",
                             connection = "myconnvarname") String message,
   final ExecutionContext context
 ) {
     context.getLogger().info(message);
 }

Les fonctions Java peuvent également être déclenchées lorsqu’un message est ajouté à une rubrique Service Bus.Java functions can also be triggered when a message is added to a Service Bus topic. L’exemple suivant utilise l’annotation @ServiceBusTopicTrigger pour décrire la configuration du déclencheur.The following example uses the @ServiceBusTopicTrigger annotation to describe the trigger configuration.

@FunctionName("sbtopicprocessor")
    public void run(
        @ServiceBusTopicTrigger(
            name = "message",
            topicName = "mytopicname",
            subscriptionName = "mysubscription",
            connection = "ServiceBusConnection"
        ) String message,
        final ExecutionContext context
    ) {
        context.getLogger().info(message);
    }

Déclencheur - exemple JavaScriptTrigger - JavaScript example

L’exemple suivant montre une liaison de déclencheur Service Bus dans un fichier function.json et une fonction JavaScript qui utilise la liaison.The following example shows a Service Bus trigger binding in a function.json file and a JavaScript function that uses the binding. La fonction lit les métadonnées du message et consigne un message de la file d’attente Service Bus.The function reads message metadata and logs a Service Bus queue message.

Voici les données de liaison dans le fichier function.json :Here's the binding data in the function.json file:

{
"bindings": [
    {
    "queueName": "testqueue",
    "connection": "MyServiceBusConnection",
    "name": "myQueueItem",
    "type": "serviceBusTrigger",
    "direction": "in"
    }
],
"disabled": false
}

Voici le code de script JavaScript :Here's the JavaScript script code:

module.exports = function(context, myQueueItem) {
    context.log('Node.js ServiceBus queue trigger function processed message', myQueueItem);
    context.log('EnqueuedTimeUtc =', context.bindingData.enqueuedTimeUtc);
    context.log('DeliveryCount =', context.bindingData.deliveryCount);
    context.log('MessageId =', context.bindingData.messageId);
    context.done();
};

Déclencheur – Exemple PythonTrigger - Python example

L’exemple suivant montre comment lire un message de file d’attente ServiceBus à l’aide d’un déclencheur.The following example demonstrates how to read a ServiceBus queue message via a trigger.

Une liaison ServiceBus est définie dans function.json, où le type est défini sur serviceBusTrigger.A ServiceBus binding is defined in function.json where type is set to serviceBusTrigger.

{
  "scriptFile": "__init__.py",
  "bindings": [
    {
      "name": "msg",
      "type": "serviceBusTrigger",
      "direction": "in",
      "queueName": "inputqueue",
      "connection": "AzureServiceBusConnectionString"
    }
  ]
}

Le code dans _init_.py déclare un paramètre func.ServiceBusMessage qui vous permet de lire le message de la file d’attente dans votre fonction.The code in _init_.py declares a parameter as func.ServiceBusMessage which allows you to read the queue message in your function.

import azure.functions as func

import logging
import json

def main(msg: func.ServiceBusMessage):
    logging.info('Python ServiceBus queue trigger processed message.')

    result = json.dumps({
        'message_id': msg.message_id,
        'body': msg.get_body().decode('utf-8'),
        'content_type': msg.content_type,
        'expiration_time': msg.expiration_time,
        'label': msg.label,
        'partition_key': msg.partition_key,
        'reply_to': msg.reply_to,
        'reply_to_session_id': msg.reply_to_session_id,
        'scheduled_enqueue_time': msg.scheduled_enqueue_time,
        'session_id': msg.session_id,
        'time_to_live': msg.time_to_live,
        'to': msg.to,
        'user_properties': msg.user_properties,
    })

    logging.info(result)

Déclencheur - attributsTrigger - attributes

Dans les bibliothèques de classes C#, utilisez les attributs suivants pour configurer un déclencheur de Service Bus :In C# class libraries, use the following attributes to configure a Service Bus trigger:

  • ServiceBusTriggerAttributeServiceBusTriggerAttribute

    Le constructeur de l’attribut prend le nom de la file d’attente ou la rubrique et l’abonnement.The attribute's constructor takes the name of the queue or the topic and subscription. Dans Azure Functions version 1.x, vous pouvez également spécifier les droits d’accès de la connexion.In Azure Functions version 1.x, you can also specify the connection's access rights. Si vous ne spécifiez pas de droits d’accès, la valeur par défaut est Manage.If you don't specify access rights, the default is Manage. Pour en savoir plus, consultez la section Déclencheur - configuration.For more information, see the Trigger - configuration section.

    Voici un exemple montrant l’attribut utilisé avec un paramètre de chaîne :Here's an example that shows the attribute used with a string parameter:

    [FunctionName("ServiceBusQueueTriggerCSharp")]                    
    public static void Run(
        [ServiceBusTrigger("myqueue")] string myQueueItem, ILogger log)
    {
        ...
    }
    

    Vous pouvez définir la propriété Connection pour spécifier le compte Service Bus à utiliser, comme indiqué dans l’exemple suivant :You can set the Connection property to specify the Service Bus account to use, as shown in the following example:

    [FunctionName("ServiceBusQueueTriggerCSharp")]                    
    public static void Run(
        [ServiceBusTrigger("myqueue", Connection = "ServiceBusConnection")] 
        string myQueueItem, ILogger log)
    {
        ...
    }
    

    Pour obtenir un exemple complet, consultez Déclencheur - exemple C#.For a complete example, see Trigger - C# example.

  • ServiceBusAccountAttributeServiceBusAccountAttribute

    Fournit une autre manière de spécifier le compte Service Bus à utiliser.Provides another way to specify the Service Bus account to use. Le constructeur prend le nom d’un paramètre d’application comportant une chaîne de connexion Service Bus.The constructor takes the name of an app setting that contains a Service Bus connection string. L’attribut peut être appliqué au niveau du paramètre, de la méthode ou de la classe.The attribute can be applied at the parameter, method, or class level. L’exemple suivant montre le niveau de la classe et celui de la méthode :The following example shows class level and method level:

    [ServiceBusAccount("ClassLevelServiceBusAppSetting")]
    public static class AzureFunctions
    {
        [ServiceBusAccount("MethodLevelServiceBusAppSetting")]
        [FunctionName("ServiceBusQueueTriggerCSharp")]
        public static void Run(
            [ServiceBusTrigger("myqueue", AccessRights.Manage)] 
            string myQueueItem, ILogger log)
    {
        ...
    }
    

Le compte Service Bus à utiliser est déterminé dans l’ordre suivant :The Service Bus account to use is determined in the following order:

  • La propriété Connection de l’attribut ServiceBusTrigger.The ServiceBusTrigger attribute's Connection property.
  • L’attribut ServiceBusAccount appliqué au même paramètre que l’attribut ServiceBusTrigger.The ServiceBusAccount attribute applied to the same parameter as the ServiceBusTrigger attribute.
  • L’attribut ServiceBusAccount appliqué à la fonction.The ServiceBusAccount attribute applied to the function.
  • L’attribut ServiceBusAccount appliqué à la classe.The ServiceBusAccount attribute applied to the class.
  • Le paramètre d’application « AzureWebJobsServiceBus ».The "AzureWebJobsServiceBus" app setting.

Déclencheur - configurationTrigger - configuration

Le tableau suivant décrit les propriétés de configuration de liaison que vous définissez dans le fichier function.json et l’attribut ServiceBusTrigger.The following table explains the binding configuration properties that you set in the function.json file and the ServiceBusTrigger attribute.

Propriété function.jsonfunction.json property Propriété d’attributAttribute property DescriptionDescription
typetype n/an/a Doit être défini sur « serviceBusTrigger ».Must be set to "serviceBusTrigger". Cette propriété est définie automatiquement lorsque vous créez le déclencheur dans le portail Azure.This property is set automatically when you create the trigger in the Azure portal.
directiondirection n/an/a Doit être défini sur « in ».Must be set to "in". Cette propriété est définie automatiquement lorsque vous créez le déclencheur dans le portail Azure.This property is set automatically when you create the trigger in the Azure portal.
namename n/an/a Nom de la variable qui représente le message de la file d’attente ou de la rubrique dans le code de la fonction.The name of the variable that represents the queue or topic message in function code. Défini sur « $return » pour faire référence à la valeur de retour de la fonction.Set to "$return" to reference the function return value.
queueNamequeueName QueueNameQueueName Nom de la file d’attente à surveiller.Name of the queue to monitor. Défini uniquement en cas de surveillance d’une file d’attente, ne s’applique pas à une rubrique.Set only if monitoring a queue, not for a topic.
topicNametopicName TopicNameTopicName Nom de la rubrique à surveiller.Name of the topic to monitor. Défini uniquement en cas de surveillance d’une rubrique, ne s’applique pas à une file d’attente.Set only if monitoring a topic, not for a queue.
subscriptionNamesubscriptionName SubscriptionNameSubscriptionName Nom de l’abonnement à surveiller.Name of the subscription to monitor. Défini uniquement en cas de surveillance d’une rubrique, ne s’applique pas à une file d’attente.Set only if monitoring a topic, not for a queue.
connectionconnection ConnectionConnection Nom d’un paramètre d’application comportant la chaîne de connexion Service Bus à utiliser pour cette liaison.The name of an app setting that contains the Service Bus connection string to use for this binding. Si le nom du paramètre d’application commence par « AzureWebJobs », vous ne pouvez spécifier que le reste du nom.If the app setting name begins with "AzureWebJobs", you can specify only the remainder of the name. Par exemple, si vous définissez connection sur « MyServiceBus », le runtime Functions recherche un paramètre d’application qui est nommé « AzureWebJobsMyServiceBus ».For example, if you set connection to "MyServiceBus", the Functions runtime looks for an app setting that is named "AzureWebJobsMyServiceBus." Si vous laissez connection vide, le runtime Functions utilise la chaîne de connexion Service Bus par défaut dans le paramètre d’application nommé « AzureWebJobsServiceBus ».If you leave connection empty, the Functions runtime uses the default Service Bus connection string in the app setting that is named "AzureWebJobsServiceBus".

Pour obtenir une chaîne de connexion, suivez les étapes indiquées à la section Obtenir les informations d’identification de gestion.To obtain a connection string, follow the steps shown at Get the management credentials. La chaîne de connexion doit être destinée à un espace de noms Service Bus, et non limitée à une file d’attente ou une rubrique spécifique.The connection string must be for a Service Bus namespace, not limited to a specific queue or topic.
accessRightsaccessRights y accéderAccess Droits d’accès de la chaîne de connexion.Access rights for the connection string. Les valeurs disponibles sont manage et listen.Available values are manage and listen. La valeur par défaut est manage, ce qui indique que connection a l'autorisation Gérer.The default is manage, which indicates that the connection has the Manage permission. Si vous utilisez une chaîne de connexion qui n’a pas l'autorisation Gérer, définissez accessRights sur « écouter ».If you use a connection string that does not have the Manage permission, set accessRights to "listen". Sinon, le runtime Functions pourrait échouer à effectuer des opérations qui nécessitent des droits de gestion.Otherwise, the Functions runtime might fail trying to do operations that require manage rights. Dans Azure Functions version 2.x et ultérieur, cette propriété n’est pas disponible, car la version la plus récente du SDK Stockage ne prend pas en charge les opérations de gestion.In Azure Functions version 2.x and higher, this property is not available because the latest version of the Storage SDK doesn't support manage operations.

Quand vous développez localement, les paramètres d’application vont dans le fichier local.settings.json.When you're developing locally, app settings go into the local.settings.json file.

Déclencheur - utilisationTrigger - usage

En langage C# et dans un script C#, vous pouvez utiliser les types de paramètres suivants pour le message de la file d’attente ou de la rubrique :In C# and C# script, you can use the following parameter types for the queue or topic message:

  • string -Si le message est un texte.string - If the message is text.
  • byte[] - Utile pour les données binaires.byte[] - Useful for binary data.
  • Un type personnalisé - Si le message contient JSON, Azure Functions essaie de désérialiser les données JSON.A custom type - If the message contains JSON, Azure Functions tries to deserialize the JSON data.
  • BrokeredMessage - Vous donne le message désérialisé avec la méthode BrokeredMessage.GetBody<.BrokeredMessage - Gives you the deserialized message with the BrokeredMessage.GetBody<T>() method.

Ces paramètres concernent Azure Functions version 1.x ; pour 2.x et ultérieur, utilisez Message au lieu de BrokeredMessage.These parameters are for Azure Functions version 1.x; for 2.x and higher, use Message instead of BrokeredMessage.

Dans JavaScript, accédez au message de la file d’attente ou de la rubrique à l’aide de context.bindings.<name from function.json>.In JavaScript, access the queue or topic message by using context.bindings.<name from function.json>. Le message Service Bus est passé à la fonction en tant que chaîne ou en tant qu’objet JSON.The Service Bus message is passed into the function as either a string or JSON object.

Déclencheur - messages incohérentsTrigger - poison messages

La gestion des messages incohérents ne peut pas être contrôlée ou configurée dans Azure Functions.Poison message handling can't be controlled or configured in Azure Functions. Service Bus gère lui-même les messages incohérents.Service Bus handles poison messages itself.

Déclencheur - Comportement de PeekLockTrigger - PeekLock behavior

Le runtime Functions reçoit un message en mode PeekLock.The Functions runtime receives a message in PeekLock mode. Il appelle l’élément Complete sur le message si la fonction se termine correctement. Si la fonction échoue, il appelle l’élément Abandon.It calls Complete on the message if the function finishes successfully, or calls Abandon if the function fails. Si la fonction s’exécute au-delà du délai imparti PeekLock, le verrou est automatiquement renouvelé tant que la fonction s’exécute.If the function runs longer than the PeekLock timeout, the lock is automatically renewed as long as the function is running.

Le paramètre maxAutoRenewDuration peut être configuré dans host.json, qui mappe à OnMessageOptions.MaxAutoRenewDuration.The maxAutoRenewDuration is configurable in host.json, which maps to OnMessageOptions.MaxAutoRenewDuration. La valeur maximale autorisée pour ce paramètre est de 5 minutes, conformément à la documentation de Service Bus, tandis que vous pouvez augmenter la limite de temps de Functions jusqu’à 10 minutes (5 minutes par défaut).The maximum allowed for this setting is 5 minutes according to the Service Bus documentation, whereas you can increase the Functions time limit from the default of 5 minutes to 10 minutes. Pour les fonctions de Service Bus, vous ne voudrez pas le faire, car vous dépasseriez la limite de renouvellement de Service Bus.For Service Bus functions you wouldn’t want to do that then, because you’d exceed the Service Bus renewal limit.

Déclencheur - métadonnées de messageTrigger - message metadata

Le déclencheur Service Bus fournit plusieurs propriétés de métadonnées.The Service Bus trigger provides several metadata properties. Ces propriétés peuvent être utilisées dans les expressions de liaison dans d’autres liaisons ou en tant que paramètres dans votre code.These properties can be used as part of binding expressions in other bindings or as parameters in your code. Ce sont les propriétés de la classe BrokeredMessage.These are properties of the BrokeredMessage class.

PropriétéProperty TypeType DescriptionDescription
DeliveryCount Int32 Le nombre de remises.The number of deliveries.
DeadLetterSource string La source de lettre morte.The dead letter source.
ExpiresAtUtc DateTime Le délai d'expiration en UTC.The expiration time in UTC.
EnqueuedTimeUtc DateTime Le temps de file d’attente en UTC.The enqueued time in UTC.
MessageId string Valeur définie par l’utilisateur que Service Bus peut utiliser pour identifier les messages en double, si cette fonctionnalité est activée.A user-defined value that Service Bus can use to identify duplicate messages, if enabled.
ContentType string Un identificateur de type de contenu utilisé par l’expéditeur et le récepteur pour une logique spécifique à l’application.A content type identifier utilized by the sender and receiver for application specific logic.
ReplyTo string L’adresse de file d’attente de réponse.The reply to queue address.
SequenceNumber Int64 Le numéro unique attribué à un message par Service Bus.The unique number assigned to a message by the Service Bus.
To string L’adresse de destination.The send to address.
Label string L’étiquette spécifique de l’application.The application specific label.
CorrelationId string L’ID de corrélation.The correlation ID.

Notes

Le déclencheur Service Bus qui fonctionne avec les abonnements et les files d’attente activées dans la session est actuellement en préversion.Currently, Service bus trigger that works with session enabled queues and subscriptions is in preview. Veuillez suivre cet élément pour toute mise à jour supplémentaire concernant cette fonctionnalité.Please track this item for any further updates regarding this.

Consultez les exemples de code qui utilisent ces propriétés précédemment dans cet article.See code examples that use these properties earlier in this article.

OutputOutput

Utilisez la liaison de sortie Azure Service Bus pour envoyer des messages de file d’attente ou de rubrique.Use Azure Service Bus output binding to send queue or topic messages.

Sortie - exempleOutput - example

Consultez l’exemple propre à un langage particulier :See the language-specific example:

Sortie - exemple C#Output - C# example

L’exemple suivant montre une fonction C# qui envoie un message de la file d’attente Service Bus :The following example shows a C# function that sends a Service Bus queue message:

[FunctionName("ServiceBusOutput")]
[return: ServiceBus("myqueue", Connection = "ServiceBusConnection")]
public static string ServiceBusOutput([HttpTrigger] dynamic input, ILogger log)
{
    log.LogInformation($"C# function processed: {input.Text}");
    return input.Text;
}

Sortie - exemple Script C#Output - C# script example

L’exemple suivant montre une liaison de sortie Service Bus dans un fichier function.json et une fonction de script C# qui utilise la liaison.The following example shows a Service Bus output binding in a function.json file and a C# script function that uses the binding. La fonction utilise un déclencheur de minuteur pour envoyer un message de file d’attente toutes les 15 secondes.The function uses a timer trigger to send a queue message every 15 seconds.

Voici les données de liaison dans le fichier function.json :Here's the binding data in the function.json file:

{
    "bindings": [
        {
            "schedule": "0/15 * * * * *",
            "name": "myTimer",
            "runsOnStartup": true,
            "type": "timerTrigger",
            "direction": "in"
        },
        {
            "name": "outputSbQueue",
            "type": "serviceBus",
            "queueName": "testqueue",
            "connection": "MyServiceBusConnection",
            "direction": "out"
        }
    ],
    "disabled": false
}

Voici le code de script C# qui crée un message unique :Here's C# script code that creates a single message:

public static void Run(TimerInfo myTimer, ILogger log, out string outputSbQueue)
{
    string message = $"Service Bus queue message created at: {DateTime.Now}";
    log.LogInformation(message); 
    outputSbQueue = message;
}

Voici le code de script C# qui crée plusieurs messages :Here's C# script code that creates multiple messages:

public static async Task Run(TimerInfo myTimer, ILogger log, IAsyncCollector<string> outputSbQueue)
{
    string message = $"Service Bus queue messages created at: {DateTime.Now}";
    log.LogInformation(message); 
    await outputSbQueue.AddAsync("1 " + message);
    await outputSbQueue.AddAsync("2 " + message);
}

Sortie - exemple F#Output - F# example

L’exemple suivant montre une liaison de sortie Service Bus dans un fichier function.json et une fonction de script F# qui utilise la liaison.The following example shows a Service Bus output binding in a function.json file and an F# script function that uses the binding. La fonction utilise un déclencheur de minuteur pour envoyer un message de file d’attente toutes les 15 secondes.The function uses a timer trigger to send a queue message every 15 seconds.

Voici les données de liaison dans le fichier function.json :Here's the binding data in the function.json file:

{
    "bindings": [
        {
            "schedule": "0/15 * * * * *",
            "name": "myTimer",
            "runsOnStartup": true,
            "type": "timerTrigger",
            "direction": "in"
        },
        {
            "name": "outputSbQueue",
            "type": "serviceBus",
            "queueName": "testqueue",
            "connection": "MyServiceBusConnection",
            "direction": "out"
        }
    ],
    "disabled": false
}

Voici le code de script F# qui crée un message unique :Here's F# script code that creates a single message:

let Run(myTimer: TimerInfo, log: ILogger, outputSbQueue: byref<string>) =
    let message = sprintf "Service Bus queue message created at: %s" (DateTime.Now.ToString())
    log.LogInformation(message)
    outputSbQueue = message

Sortie : exemple JavaOutput - Java example

L’exemple suivant montre une fonction Java qui envoie un message à une file d’attente Service Bus myqueue lorsqu’elle est déclenchée par une requête HTTP.The following example shows a Java function that sends a message to a Service Bus queue myqueue when triggered by an HTTP request.

@FunctionName("httpToServiceBusQueue")
@ServiceBusQueueOutput(name = "message", queueName = "myqueue", connection = "AzureServiceBusConnection")
public String pushToQueue(
  @HttpTrigger(name = "request", methods = {HttpMethod.POST}, authLevel = AuthorizationLevel.ANONYMOUS)
  final String message,
  @HttpOutput(name = "response") final OutputBinding<T> result ) {
      result.setValue(message + " has been sent.");
      return message;
 }

Dans la bibliothèque du runtime des fonctions Java, utilisez l’annotation @QueueOutput sur les paramètres de fonction dont la valeur serait écrite dans une file d’attente Service Bus.In the Java functions runtime library, use the @QueueOutput annotation on function parameters whose value would be written to a Service Bus queue. Le type de paramètre doit être OutputBinding<T>, où T désigne n’importe quel type Java natif d’un POJO.The parameter type should be OutputBinding<T>, where T is any native Java type of a POJO.

Les fonctions Java peuvent également écrire dans une rubrique Service Bus.Java functions can also write to a Service Bus topic. L’exemple suivant utilise l’annotation @ServiceBusTopicOutput afin de décrire la configuration pour la liaison de sortie.The following example uses the @ServiceBusTopicOutput annotation to describe the configuration for the output binding.

@FunctionName("sbtopicsend")
    public HttpResponseMessage run(
            @HttpTrigger(name = "req", methods = {HttpMethod.GET, HttpMethod.POST}, authLevel = AuthorizationLevel.ANONYMOUS) HttpRequestMessage<Optional<String>> request,
            @ServiceBusTopicOutput(name = "message", topicName = "mytopicname", subscriptionName = "mysubscription", connection = "ServiceBusConnection") OutputBinding<String> message,
            final ExecutionContext context) {
        
        String name = request.getBody().orElse("Azure Functions");

        message.setValue(name);
        return request.createResponseBuilder(HttpStatus.OK).body("Hello, " + name).build();
        
    }

Sortie - exemple JavaScriptOutput - JavaScript example

L’exemple suivant montre une liaison de sortie Service Bus dans un fichier function.json et une fonction JavaScript qui utilise la liaison.The following example shows a Service Bus output binding in a function.json file and a JavaScript function that uses the binding. La fonction utilise un déclencheur de minuteur pour envoyer un message de file d’attente toutes les 15 secondes.The function uses a timer trigger to send a queue message every 15 seconds.

Voici les données de liaison dans le fichier function.json :Here's the binding data in the function.json file:

{
    "bindings": [
        {
            "schedule": "0/15 * * * * *",
            "name": "myTimer",
            "runsOnStartup": true,
            "type": "timerTrigger",
            "direction": "in"
        },
        {
            "name": "outputSbQueue",
            "type": "serviceBus",
            "queueName": "testqueue",
            "connection": "MyServiceBusConnection",
            "direction": "out"
        }
    ],
    "disabled": false
}

Voici le code de script JavaScript qui crée un message unique :Here's JavaScript script code that creates a single message:

module.exports = function (context, myTimer) {
    var message = 'Service Bus queue message created at ' + timeStamp;
    context.log(message);   
    context.bindings.outputSbQueue = message;
    context.done();
};

Voici le code de script JavaScript qui crée plusieurs messages :Here's JavaScript script code that creates multiple messages:

module.exports = function (context, myTimer) {
    var message = 'Service Bus queue message created at ' + timeStamp;
    context.log(message);   
    context.bindings.outputSbQueue = [];
    context.bindings.outputSbQueue.push("1 " + message);
    context.bindings.outputSbQueue.push("2 " + message);
    context.done();
};

Sortie - Exemple PythonOutput - Python example

L’exemple suivant montre comment écrire dans une file d’attente ServiceBus dans Python.The following example demonstrates how to write out to a ServiceBus queue in Python.

Une définition de liaison ServiceBue est définie dans function.json , où Type possède la valeur serviceBus.A ServiceBue binding definition is defined in function.json where type is set to serviceBus.

{
  "scriptFile": "__init__.py",
  "bindings": [
    {
      "authLevel": "function",
      "type": "httpTrigger",
      "direction": "in",
      "name": "req",
      "methods": [
        "get",
        "post"
      ]
    },
    {
      "type": "http",
      "direction": "out",
      "name": "$return"
    },
    {
      "type": "serviceBus",
      "direction": "out",
      "connection": "AzureServiceBusConnectionString",
      "name": "msg",
      "queueName": "outqueue"
    }
  ]
}

Dans _init_.py, vous pouvez écrire un message dans la file d’attente en passant une valeur à la méthode set.In _init_.py, you can write out a message to the queue by passing a value to the set method.

import azure.functions as func

def main(req: func.HttpRequest, msg: func.Out[str]) -> func.HttpResponse:

    input_msg = req.params.get('message')

    msg.set(input_msg)

    return 'OK'

Sortie - attributsOutput - attributes

Dans les bibliothèques de classes C#, utilisez l’attribut ServiceBusAttribute.In C# class libraries, use the ServiceBusAttribute.

Le constructeur de l’attribut prend le nom de la file d’attente ou la rubrique et l’abonnement.The attribute's constructor takes the name of the queue or the topic and subscription. Vous pouvez également spécifier les droits d’accès de la connexion.You can also specify the connection's access rights. La détermination du paramètre des droits d’accès est expliquée dans la section Sortie - configuration.How to choose the access rights setting is explained in the Output - configuration section. Voici un exemple qui illustre l’attribut appliqué à la valeur de retour de la fonction :Here's an example that shows the attribute applied to the return value of the function:

[FunctionName("ServiceBusOutput")]
[return: ServiceBus("myqueue")]
public static string Run([HttpTrigger] dynamic input, ILogger log)
{
    ...
}

Vous pouvez définir la propriété Connection pour spécifier le compte Service Bus à utiliser, comme indiqué dans l’exemple suivant :You can set the Connection property to specify the Service Bus account to use, as shown in the following example:

[FunctionName("ServiceBusOutput")]
[return: ServiceBus("myqueue", Connection = "ServiceBusConnection")]
public static string Run([HttpTrigger] dynamic input, ILogger log)
{
    ...
}

Pour obtenir un exemple complet, consultez Sortie - exemple C#.For a complete example, see Output - C# example.

Vous pouvez utiliser l’attribut ServiceBusAccount pour spécifier le compte Service Bus à utiliser au niveau de la classe, de la méthode ou du paramètre.You can use the ServiceBusAccount attribute to specify the Service Bus account to use at class, method, or parameter level. Pour plus d’informations, consultez Déclencheur - attributs.For more information, see Trigger - attributes.

Sortie - configurationOutput - configuration

Le tableau suivant décrit les propriétés de configuration de liaison que vous définissez dans le fichier function.json et l’attribut ServiceBus.The following table explains the binding configuration properties that you set in the function.json file and the ServiceBus attribute.

Propriété function.jsonfunction.json property Propriété d’attributAttribute property DescriptionDescription
typetype n/an/a Doit être défini sur « serviceBus ».Must be set to "serviceBus". Cette propriété est définie automatiquement lorsque vous créez le déclencheur dans le portail Azure.This property is set automatically when you create the trigger in the Azure portal.
directiondirection n/an/a Doit être défini sur « out ».Must be set to "out". Cette propriété est définie automatiquement lorsque vous créez le déclencheur dans le portail Azure.This property is set automatically when you create the trigger in the Azure portal.
namename n/an/a Nom de la variable qui représente la file d’attente ou la rubrique dans le code de la fonction.The name of the variable that represents the queue or topic in function code. Défini sur « $return » pour faire référence à la valeur de retour de la fonction.Set to "$return" to reference the function return value.
queueNamequeueName QueueNameQueueName Nom de la file d’attente.Name of the queue. Défini uniquement en cas d’envoi de messages de file d’attente, ne s’applique pas à une rubrique.Set only if sending queue messages, not for a topic.
topicNametopicName TopicNameTopicName Nom de la rubrique à surveiller.Name of the topic to monitor. Défini uniquement en cas d’envoi de messages de rubrique, ne s’applique pas à une file d’attente.Set only if sending topic messages, not for a queue.
connectionconnection ConnectionConnection Nom d’un paramètre d’application comportant la chaîne de connexion Service Bus à utiliser pour cette liaison.The name of an app setting that contains the Service Bus connection string to use for this binding. Si le nom du paramètre d’application commence par « AzureWebJobs », vous ne pouvez spécifier que le reste du nom.If the app setting name begins with "AzureWebJobs", you can specify only the remainder of the name. Par exemple, si vous définissez connection sur « MyServiceBus », le runtime Functions recherche un paramètre d’application qui est nommé « AzureWebJobsMyServiceBus ».For example, if you set connection to "MyServiceBus", the Functions runtime looks for an app setting that is named "AzureWebJobsMyServiceBus." Si vous laissez connection vide, le runtime Functions utilise la chaîne de connexion Service Bus par défaut dans le paramètre d’application nommé « AzureWebJobsServiceBus ».If you leave connection empty, the Functions runtime uses the default Service Bus connection string in the app setting that is named "AzureWebJobsServiceBus".

Pour obtenir une chaîne de connexion, suivez les étapes indiquées à la section Obtenir les informations d’identification de gestion.To obtain a connection string, follow the steps shown at Get the management credentials. La chaîne de connexion doit être destinée à un espace de noms Service Bus, et non limitée à une file d’attente ou une rubrique spécifique.The connection string must be for a Service Bus namespace, not limited to a specific queue or topic.
accessRightsaccessRights y accéderAccess Droits d’accès de la chaîne de connexion.Access rights for the connection string. Les valeurs disponibles sont manage et listen.Available values are manage and listen. La valeur par défaut est manage, ce qui indique que connection a l'autorisation Gérer.The default is manage, which indicates that the connection has the Manage permission. Si vous utilisez une chaîne de connexion qui n’a pas l'autorisation Gérer, définissez accessRights sur « écouter ».If you use a connection string that does not have the Manage permission, set accessRights to "listen". Sinon, le runtime Functions pourrait échouer à effectuer des opérations qui nécessitent des droits de gestion.Otherwise, the Functions runtime might fail trying to do operations that require manage rights. Dans Azure Functions version 2.x et ultérieur, cette propriété n’est pas disponible, car la version la plus récente du SDK Stockage ne prend pas en charge les opérations de gestion.In Azure Functions version 2.x and higher, this property is not available because the latest version of the Storage SDK doesn't support manage operations.

Quand vous développez localement, les paramètres d’application vont dans le fichier local.settings.json.When you're developing locally, app settings go into the local.settings.json file.

Sortie - utilisationOutput - usage

Dans Azure Functions version 1.x, le runtime crée la file d’attente si elle n’existe pas et si vous avez défini accessRights sur manage.In Azure Functions 1.x, the runtime creates the queue if it doesn't exist and you have set accessRights to manage. Dans Functions version 2.x et ultérieur, la file d’attente ou la rubrique doit déjà exister. Si vous spécifiez une file d’attente ou une rubrique qui n’existe pas, la fonction échoue.In Functions version 2.x and higher, the queue or topic must already exist; if you specify a queue or topic that doesn't exist, the function will fail.

En langage C# et dans un script C#, vous pouvez utiliser les types de paramètres suivants pour la liaison de sortie :In C# and C# script, you can use the following parameter types for the output binding:

  • out T paramName - T peut être n’importe quel type sérialisable au format JSON.out T paramName - T can be any JSON-serializable type. Si la valeur du paramètre est null lorsque la fonction se termine, Functions crée le message avec un objet null.If the parameter value is null when the function exits, Functions creates the message with a null object.
  • out string - Si la valeur du paramètre est null lorsque la fonction se termine, Functions ne crée pas de message.out string - If the parameter value is null when the function exits, Functions does not create a message.
  • out byte[] - Si la valeur du paramètre est null lorsque la fonction se termine, Functions ne crée pas de message.out byte[] - If the parameter value is null when the function exits, Functions does not create a message.
  • out BrokeredMessage - Si la valeur du paramètre est null lorsque la fonction se termine, Functions ne crée pas de message (pour Functions 1.x).out BrokeredMessage - If the parameter value is null when the function exits, Functions does not create a message (for Functions 1.x)
  • out Message - Si la valeur du paramètre est null quand la fonction se termine, Functions ne crée pas de message (pour Functions 2.x et ultérieur)out Message - If the parameter value is null when the function exits, Functions does not create a message (for Functions 2.x and higher)
  • ICollector<T> ou IAsyncCollector<T> - Pour la création de plusieurs messages.ICollector<T> or IAsyncCollector<T> - For creating multiple messages. Un message est créé quand vous appelez la méthode Add .A message is created when you call the Add method.

Quand vous utilisez des fonctions C# :When working with C# functions:

  • Les fonctions asynchrones ont besoin d’une valeur renvoyée ou de IAsyncCollector au lieu d’un paramètre out.Async functions need a return value or IAsyncCollector instead of an out parameter.

  • Pour accéder à l’ID de session, établissez une liaison à un type Message et utilisez la propriété sessionId.To access the session ID, bind to a Message type and use the sessionId property.

Dans JavaScript, accédez à la file d’attente ou la rubrique à l’aide de context.bindings.<name from function.json>.In JavaScript, access the queue or topic by using context.bindings.<name from function.json>. Vous pouvez affecter une chaîne, un tableau d’octets ou un objet Javascript (désérialisé au format JSON) à context.binding.<name>.You can assign a string, a byte array, or a JavaScript object (deserialized into JSON) to context.binding.<name>.

Pour envoyer un message à une file d’attente prenant en charge les sessions dans des langages autres que C#, utilisez le SDK Azure Service Bus plutôt que la liaison de sortie intégrée.To send a message to a session-enabled queue in non-C# languages, use the Azure Service Bus SDK rather than the built-in output binding.

Exceptions et codes de retourExceptions and return codes

LiaisonBinding Informations de référenceReference
Service BusService Bus Codes d’erreur de Service BusService Bus Error Codes
Service BusService Bus Limites de Service BusService Bus Limits

Paramètres host.jsonhost.json settings

Cette section décrit les paramètres de configuration globaux disponibles pour cette liaison dans les versions 2.x et ultérieures.This section describes the global configuration settings available for this binding in versions 2.x and higher. L’exemple de fichier host.json ci-dessous contient seulement les paramètres pour cette liaison.The example host.json file below contains only the settings for this binding. Pour plus d’informations sur les paramètres de configuration globale, consultez Informations de référence sur le fichier host.json pour la version d’Azure Functions.For more information about global configuration settings, see host.json reference for Azure Functions version.

Notes

Pour obtenir une référence de host.json dans Functions 1.x, consultez Informations de référence sur le fichier host.json pour Azure Functions 1.x.For a reference of host.json in Functions 1.x, see host.json reference for Azure Functions 1.x.

{
    "version": "2.0",
    "extensions": {
        "serviceBus": {
            "prefetchCount": 100,
            "messageHandlerOptions": {
                "autoComplete": false,
                "maxConcurrentCalls": 32,
                "maxAutoRenewDuration": "00:55:00"
            }
        }
    }
}
PropriétéProperty DefaultDefault DescriptionDescription
maxAutoRenewDurationmaxAutoRenewDuration 00:05:0000:05:00 Durée maximale pendant laquelle le verrouillage de message doit être renouvelé automatiquement.The maximum duration within which the message lock will be renewed automatically.
autoCompleteautoComplete truetrue Indique si le déclencheur doit immédiatement signaler la complétion (autocomplétion) ou attendre que le traitement appelle la complétion.Whether the trigger should immediately mark as complete (autocomplete) or wait for processing to call complete.
maxConcurrentCallsmaxConcurrentCalls 1616 Nombre maximal d’appels simultanés pour le rappel que la pompe de messages doit initier.The maximum number of concurrent calls to the callback that the message pump should initiate. Par défaut, le runtime Functions traite plusieurs messages simultanément.By default, the Functions runtime processes multiple messages concurrently. Pour que le runtime ne traite qu’un message de file d’attente ou de rubrique à la fois, définissez maxConcurrentCalls sur 1.To direct the runtime to process only a single queue or topic message at a time, set maxConcurrentCalls to 1.
prefetchCountprefetchCount n/an/a Valeur PrefetchCount par défaut qui est utilisée par l’instance MessageReceiver sous-jacente.The default PrefetchCount that will be used by the underlying MessageReceiver.

Étapes suivantesNext steps