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.
Exempel
En C#-funktion kan skapas med något av följande C#-lägen:
Körningsmodell | Beskrivning |
---|---|
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. |
Processmodell | 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 };
}
});
I följande exempel visas Dapr-utlösare i en function.json-fil och PowerShell-kod som använder dessa bindningar.
Här är filen function.json för daprTopicTrigger
:
{
"bindings": [
{
"type": "daprTopicTrigger",
"pubsubname": "%PubSubName%",
"topic": "B",
"name": "subEvent",
"direction": "in"
}
]
}
Mer information om function.json filegenskaper finns i avsnittet Konfiguration .
I kod:
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"])
Egenskaper
I den processbaserade modellen använder du DaprTopicTrigger
för att utlösa en Dapr pub/sub-bindning, som stöder följande egenskaper.
Parameter | Beskrivning |
---|---|
PubSubName | Namnet på Dapr pub/sub. |
Avsnitt | Namnet på Dapr-ämnet. |
Anteckningar
Med anteckningen DaprTopicTrigger
kan du skapa en funktion som körs när ett ämne tas emot.
Komponent | Beskrivning |
---|---|
pubSubName | Namnet på Dapr pub/sub. |
ämne | Namnet på Dapr-ämnet. |
Konfiguration
I följande tabell förklaras de bindningskonfigurationsegenskaper som du anger i koden.
Fastighet | Beskrivning |
---|---|
pubsubname | Namnet på dapr-puben/underkomponenttypen. |
ämne | Namnet på ämnet. |
I följande tabell förklaras de bindningskonfigurationsegenskaper som du anger i filen function.json .
function.json egenskap | Beskrivning |
---|---|
pubsubname | Namnet på dapr-puben/underkomponenttypen. |
ämne | Namnet på ämnet. |
I följande tabell beskrivs bindningskonfigurationsegenskaperna för @dapp.dapr_topic_trigger
som du anger i Python-koden.
Fastighet | Beskrivning | Kan skickas via attribut | Kan skickas via RequestBody |
---|---|---|---|
pub_sub_name | Namnet på komponenttypen Dapr-prenumeration. | ✔️ | ❌ |
ämne | Prenumerationsämnet. | ✔️ | ❌ |
Se avsnittet Exempel för fullständiga exempel.
Användning
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.text
Lä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