Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Azure Functions kan utlösas i en Dapr-ämnesprenumeration med hjälp av följande Dapr-händelser.
Information om installation och konfiguration av Dapr-tillägget finns i översikten över Dapr-tillägget.
Example
En C#-funktion kan skapas med något av följande C#-lägen:
| Execution model | Description | 
|---|---|
| Isolerad arbetsmodell | Funktionskoden körs i en separat .NET-arbetsprocess. Använd med versioner av .NET och .NET Framework som stöds. Mer information finns i Guide för att köra C# Azure Functions i den isolerade arbetsmodellen. | 
| In-process model | Funktionskoden körs i samma process som värdprocessen för Functions. Stöder endast LTS-versioner (Long Term Support) av .NET. Mer information finns i Utveckla C#-klassbiblioteksfunktioner med Hjälp av 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);
}
Här är Java-koden för att prenumerera på ett ämne med hjälp av Dapr Topic-utlösaren:
@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.");
Använd - app objektet för att registrera 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 };
    }
});
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"
I följande exempel visas en Dapr Topic-utlösare som använder programmeringsmodellen v2 Python. Så här använder daprTopicTrigger du i din Python-funktionsappkod:
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 | Namnet på Dapr pub/sub. | 
| Topic | Namnet på Dapr-ämnet. | 
Annotations
Med anteckningen DaprTopicTrigger kan du skapa en funktion som körs när ett ämne tas emot.
| Element | Description | 
|---|---|
| pubSubName | Namnet på Dapr pub/sub. | 
| topic | Namnet på Dapr-ämnet. | 
Configuration
I följande tabell förklaras de bindningskonfigurationsegenskaper som du anger i koden.
| Property | Description | 
|---|---|
| pubsubname | Namnet på dapr-puben/underkomponenttypen. | 
| topic | Namnet på ämnet. | 
The following table explains the binding configuration properties that you set in the function.json file.
| function.json property | Description | 
|---|---|
| pubsubname | Namnet på dapr-puben/underkomponenttypen. | 
| topic | Namnet på ämnet. | 
I följande tabell beskrivs bindningskonfigurationsegenskaperna för @dapp.dapr_topic_trigger som du anger i Python-koden.
| Property | Description | Kan skickas via attribut | Kan skickas via RequestBody | 
|---|---|---|---|
| pub_sub_name | Namnet på komponenttypen Dapr-prenumeration. | ✔️ | ❌ | 
| topic | Prenumerationsämnet. | ✔️ | ❌ | 
See the Example section for complete examples.
Usage
Om du vill använda en Dapr Topic-utlösare börjar du med att konfigurera en Dapr pub/underkomponent. Du kan lära dig mer om vilken komponent som ska användas och hur du konfigurerar den i den officiella Dapr-dokumentationen.
- Dapr pub/underkomponentspecifikationer
- Gör så här: Publicera ett meddelande och prenumerera på ett ämne
Om du vill använda daprTopicTrigger i Python v2 konfigurerar du projektet med rätt beroenden.
- requirements.textLägg till följande rad i filen:- azure-functions==1.18.0b3
- Installera Python-biblioteket i terminalen. - pip install -r .\requirements.txt
- local.setting.jsonÄndra filen med följande konfiguration:- "PYTHON_ISOLATE_WORKER_DEPENDENCIES":1