Partager via


Déclencheur de rubrique Dapr pour Azure Functions

Azure Functions peut être déclenché sur un abonnement de rubrique Dapr à l’aide des événements Dapr suivants.

Pour plus d’informations sur l’installation et la configuration de l’extension Dapr, consultez la vue d’ensemble de l’extension Dapr.

Example

Une fonction C# peut être créée à l’aide de l’un des modes C# suivants :

Execution model Description
Modèle de travailleur isolé Le code de votre fonction s’exécute dans un processus Worker .NET distinct. Utilisez avec les versions prises en charge de .NET et .NET Framework. Pour plus d’informations, consultez Guide d’exécution de C# Azure Functions dans le modèle worker isolé.
In-process model Le code de votre fonction s’exécute dans le même processus que le processus hôte Functions. Prend uniquement en charge les versions LTS (Long Term Support) de .NET. Pour en découvrir plus, consultez Développer des fonctions de bibliothèque de classes C# à l’aide d’Azure Functions.
[FunctionName("TransferEventBetweenTopics")]
public static void Run(
    [DaprTopicTrigger("%PubSubName%", Topic = "A")] CloudEvent subEvent,
    [DaprPublish(PubSubName = "%PubSubName%", Topic = "B")] out DaprPubSubEvent pubEvent,
    ILogger log)
{
    log.LogInformation("C# function processed a TransferEventBetweenTopics request from the Dapr Runtime.");


    pubEvent = new DaprPubSubEvent("Transfer from Topic A: " + subEvent.Data);
}

Voici le code Java pour vous abonner à une rubrique à l’aide du déclencheur de rubrique Dapr :

@FunctionName("PrintTopicMessage")
public String run(
        @DaprTopicTrigger(
            pubSubName = "%PubSubName%",
            topic = "B")
        String payload,
        final ExecutionContext context) throws JsonProcessingException {
    Logger logger = context.getLogger();
    logger.info("Java function processed a PrintTopicMessage request from the Dapr Runtime.");

Utilisez l’objet app pour inscrire les daprTopicTriggerpoints suivants :

const { app, trigger } = require('@azure/functions');

app.generic('TransferEventBetweenTopics', {
    trigger: trigger.generic({
        type: 'daprTopicTrigger',
        name: "subEvent",
        pubsubname: "%PubSubName%",
        topic: "A"
    }),
    return: daprPublishOutput,
    handler: async (request, context) => {
        context.log("Node function processed a TransferEventBetweenTopics request from the Dapr Runtime.");
        context.log(context.triggerMetadata.subEvent.data);

        return { payload: context.triggerMetadata.subEvent.data };
    }
});

The following examples show Dapr triggers in a function.json file and PowerShell code that uses those bindings.

Here's the function.json file for daprTopicTrigger:

{
  "bindings": [
    {
      "type": "daprTopicTrigger",
      "pubsubname": "%PubSubName%",
      "topic": "B",
      "name": "subEvent",
      "direction": "in"
    }
  ]
}

For more information about function.json file properties, see the Configuration section.

In code:

using namespace System
using namespace Microsoft.Azure.WebJobs
using namespace Microsoft.Extensions.Logging
using namespace Microsoft.Azure.WebJobs.Extensions.Dapr
using namespace Newtonsoft.Json.Linq

param (
    $subEvent
)

Write-Host "PowerShell function processed a PrintTopicMessage request from the Dapr Runtime."

# Convert the object to a JSON-formatted string with ConvertTo-Json
$jsonString = $subEvent["data"] | ConvertTo-Json -Compress

Write-Host "Topic B received a message: $jsonString"

L’exemple suivant montre un déclencheur de rubrique Dapr, qui utilise le modèle de programmation Python v2. Pour utiliser le daprTopicTrigger code de votre application de fonction Python :

import logging
import json
import azure.functions as func

app = func.FunctionApp()

@app.function_name(name="PrintTopicMessage")
@app.dapr_topic_trigger(arg_name="subEvent", pub_sub_name="%PubSubName%", topic="B", route="B")
def main(subEvent) -> None:
    logging.info('Python function processed a PrintTopicMessage request from the Dapr Runtime.')
    subEvent_json = json.loads(subEvent)
    logging.info("Topic B received a message: " + subEvent_json["data"])

Attributes

In the in-process model, use the DaprTopicTrigger to trigger a Dapr pub/sub binding, which supports the following properties.

Parameter Description
PubSubName Nom du pub/sub Dapr.
Topic Nom de la rubrique Dapr.

Annotations

L’annotation DaprTopicTrigger vous permet de créer une fonction qui s’exécute lorsqu’une rubrique est reçue.

Element Description
pubSubName Nom du pub/sub Dapr.
topic Nom de la rubrique Dapr.

Configuration

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

Property Description
pubsubname Nom du type de composant Pub/Sub Dapr.
topic Nom de la rubrique.

The following table explains the binding configuration properties that you set in the function.json file.

function.json property Description
pubsubname Nom du type de composant Pub/Sub Dapr.
topic Nom de la rubrique.

Le tableau suivant explique les propriétés de configuration de liaison pour @dapp.dapr_topic_trigger que vous définissez dans votre code Python.

Property Description Peut être envoyé via l’attribut Peut être envoyé via RequestBody
pub_sub_name Nom du type de composant d’abonnement Dapr. ✔️
topic Rubrique d’abonnement. ✔️

See the Example section for complete examples.

Usage

Pour utiliser un déclencheur de rubrique Dapr, commencez par configurer un composant pub/sub Dapr. Vous pouvez en savoir plus sur le composant à utiliser et sur la façon de le configurer dans la documentation officielle Dapr.

Pour utiliser daprTopicTrigger dans Python v2, configurez votre projet avec les dépendances appropriées.

  1. Créer et activer un environnement virtuel.

  2. Dans votre fichier requirements.text, ajoutez la ligne suivante :

    azure-functions==1.18.0b3
    
  3. Dans le terminal, installez la bibliothèque Python.

    pip install -r .\requirements.txt
    
  4. Modifiez votre fichier local.setting.json avec la configuration suivante :

    "PYTHON_ISOLATE_WORKER_DEPENDENCIES":1
    

Next steps

En savoir plus sur la publication et l’abonnement Dapr.