Anmerkung
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Azure Functions können mit den folgenden Dapr-Ereignissen in einem Dapr-Themenabonnement ausgelöst werden.
Informationen zu Setup- und Konfigurationsdetails der Dapr-Erweiterung finden Sie in der Dapr-Erweiterungsübersicht.
Example
Eine C#-Funktion kann mit einem der folgenden C#-Modi erstellt werden:
| Execution model | Description |
|---|---|
| Isoliertes Workermodell | Ihr Funktionscode wird in einem separaten .NET-Workerprozess ausgeführt. Verwenden Sie dazu unterstützte Versionen von .NET und .NET Framework. Weitere Informationen finden Sie im Handbuch zum Ausführen von C#-Azure-Funktionen im isolierten Arbeitsmodell. |
| In-process model | Ihr Funktionscode wird im gleichen Prozess wie der Functions-Hostprozess ausgeführt. Unterstützt nur LTS-Versionen (Long Term Support) von .NET. Weitere Informationen finden Sie unter Entwickeln von C#-Klassenbibliotheksfunktionen mithilfe von 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);
}
Im Folgenden finden Sie den Java-Code zum Abonnieren eines Themas mithilfe des Dapr Topic-Triggers:
@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.");
Verwenden Sie das app Objekt, um folgendes daprTopicTriggerzu registrieren:
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"
Das folgende Beispiel zeigt einen Dapr Topic-Trigger, der das v2 Python-Programmiermodell verwendet. So verwenden Sie den daprTopicTrigger In-Python-Funktions-App-Code:
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 | Der Name des Dapr pub/sub. |
| Topic | Der Name des Themas "Dapr". |
Annotations
Mit der DaprTopicTrigger Anmerkung können Sie eine Funktion erstellen, die ausgeführt wird, wenn ein Thema empfangen wird.
| Element | Description |
|---|---|
| pubSubName | Der Name des Dapr pub/sub. |
| topic | Der Name des Themas "Dapr". |
Configuration
Die folgende Tabelle gibt Aufschluss über die Bindungskonfigurationseigenschaften, die Sie im Code festlegen.
| Property | Description |
|---|---|
| pubsubname | Der Name des Dapr pub/sub component type. |
| topic | Name des Themas. |
The following table explains the binding configuration properties that you set in the function.json file.
| function.json property | Description |
|---|---|
| pubsubname | Der Name des Dapr pub/sub component type. |
| topic | Name des Themas. |
Die folgende Tabelle gibt Aufschluss über die Bindungskonfigurationseigenschaften für @dapp.dapr_topic_trigger, die Sie im Python-Code festlegen.
| Property | Description | Kann per Attribut gesendet werden | Kann über RequestBody gesendet werden |
|---|---|---|---|
| pub_sub_name | Der Name des Dapr-Abonnementkomponententyps. | ✔️ | ❌ |
| topic | Das Abonnementthema. | ✔️ | ❌ |
See the Example section for complete examples.
Usage
Um einen Dapr Topic-Trigger zu verwenden, richten Sie zunächst eine Dapr pub/sub-Komponente ein. In der offiziellen Dapr-Dokumentation erfahren Sie mehr darüber, welche Komponente Sie verwenden sollten und wie Sie diese einrichten können.
- Dapr pub/sub component specs
- Gewusst wie: Veröffentlichen einer Nachricht und Abonnieren eines Themas
Um daprTopicTrigger in Python v2 zu verwenden, richten Sie Ihr Projekt mit den richtigen Abhängigkeiten ein.
Fügen Sie in Ihrer
requirements.text-Datei die folgende Zeile hinzu:azure-functions==1.18.0b3Installieren Sie im Terminal die Python-Bibliothek.
pip install -r .\requirements.txtÄndern Sie ihre
local.setting.json-Datei mit der folgenden Konfiguration:"PYTHON_ISOLATE_WORKER_DEPENDENCIES":1
Next steps
Weitere Informationen zum Veröffentlichen und Abonnieren von Dapr.