Sdílet prostřednictvím


Trigger tématu Dapr pro Azure Functions

Azure Functions je možné aktivovat v předplatném tématu Dapr pomocí následujících událostí Dapr.

Informace o nastavení a konfiguraci rozšíření Dapr najdete v přehledu rozšíření Dapr.

Příklad

Funkci jazyka C# je možné vytvořit pomocí jednoho z následujících režimů jazyka C#:

Model spouštění Popis
Izolovaný model pracovního procesu Kód funkce se spouští v samostatném pracovním procesu .NET. Používá se s podporovanými verzemi rozhraní .NET a .NET Framework. Další informace najdete v tématu Vývoj funkcí izolovaného pracovního procesu .NET.
Model v procesu Kód funkce se spouští ve stejném procesu jako hostitelský proces služby Functions. Podporuje pouze verze dlouhodobé podpory (LTS) rozhraní .NET. Další informace najdete v tématu Vývoj funkcí knihovny tříd .NET.
[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);
}

Tady je kód Java pro přihlášení k odběru tématu pomocí triggeru tématu 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.");

Pomocí objektu app zaregistrujte daprTopicTrigger:

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 };
    }
});

Následující příklady ukazují triggery Dapr v souboru function.json a kódu PowerShellu, který tyto vazby používá.

Tady je soubor function.json pro daprTopicTrigger:

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

Další informace o function.json vlastnosti souboru naleznete v části Konfigurace .

V kódu:

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"

Následující příklad ukazuje trigger Dapr Topic, který používá programovací model Pythonu v2. Použití kódu aplikace funkcí Pythonu daprTopicTrigger :

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"])

Atributy

V modelu v procesu použijte DaprTopicTrigger k aktivaci vazby dapr pub/sub binding, která podporuje následující vlastnosti.

Parametr Popis
PubSubName Název pub/sub dapr.
Předmět zájmu Název tématu Dapr.

Poznámky

Poznámka DaprTopicTrigger umožňuje vytvořit funkci, která se spustí při přijetí tématu.

Element (Prvek) Popis
pubSubName Název pub/sub dapr.
topic Název tématu Dapr.

Konfigurace

Následující tabulka vysvětluje vlastnosti konfigurace vazby, které jste nastavili v kódu.

Vlastnost Popis
pubsubname Název typu součásti Dapr pub/sub.
topic Název tématu

Následující tabulka vysvětluje vlastnosti konfigurace vazby, které jste nastavili v souboru function.json .

vlastnost function.json Popis
pubsubname Název typu součásti Dapr pub/sub.
topic Název tématu

Následující tabulka vysvětluje vlastnosti konfigurace vazby, @dapp.dapr_topic_trigger které jste nastavili v kódu Pythonu.

Vlastnost Popis Lze odeslat prostřednictvím atributu. Lze odeslat přes RequestBody.
pub_sub_name Název typu komponenty předplatného Dapr. ✔️
topic Téma předplatného. ✔️

Kompletní příklady najdete v části Příklad.

Využití

Pokud chcete použít trigger tématu Dapr, začněte nastavením komponenty pub/sub Dapr. Další informace o tom, kterou komponentu použít a jak ji nastavit, najdete v oficiální dokumentaci k Dapr.

Pokud chcete použít python daprTopicTrigger v2, nastavte projekt se správnými závislostmi.

  1. Vytvoření a aktivace virtuálního prostředí

  2. requirements.text Do souboru přidejte následující řádek:

    azure-functions==1.18.0b3
    
  3. V terminálu nainstalujte knihovnu Pythonu.

    pip install -r .\requirements.txt
    
  4. Upravte local.setting.json soubor pomocí následující konfigurace:

    "PYTHON_ISOLATE_WORKER_DEPENDENCIES":1
    

Další kroky

Přečtěte si další informace o publikování a přihlášení k odběru Dapr.