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.
Mit der Dapr-Ausgabebindung können Sie eine Nachricht während einer Funktionsausführung in einem Dapr-Thema veröffentlichen.
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. |
Das folgende Beispiel veranschaulicht die Verwendung einer Dapr-Veröffentlichungsausgabebindung zum Ausführen eines Dapr-Veröffentlichungsvorgangs in einer pub/sub-Komponente und einem Thema.
[FunctionName("PublishOutputBinding")]
public static void Run(
[HttpTrigger(AuthorizationLevel.Function, "post", Route = "topic/{topicName}")] HttpRequest req,
[DaprPublish(PubSubName = "%PubSubName%", Topic = "{topicName}")] out DaprPubSubEvent pubSubEvent,
ILogger log)
{
string requestBody = new StreamReader(req.Body).ReadToEnd();
pubSubEvent = new DaprPubSubEvent(requestBody);
}
Im folgenden Beispiel wird eine "TransferEventBetweenTopics" Funktion mithilfe der DaprPublishOutput Bindung mit einer DaprTopicTrigger:
@FunctionName("TransferEventBetweenTopics")
public String run(
@DaprTopicTrigger(
pubSubName = "%PubSubName%",
topic = "A")
String request,
@DaprPublishOutput(
pubSubName = "%PubSubName%",
topic = "B")
OutputBinding<String> payload,
final ExecutionContext context) throws JsonProcessingException {
context.getLogger().info("Java function processed a TransferEventBetweenTopics request from the Dapr Runtime.");
}
Im folgenden Beispiel wird die Dapr-Ausgabebindung mit einem HTTP-Trigger gekoppelt, der app vom Objekt registriert wird:
const { app, trigger } = require('@azure/functions');
app.generic('PublishOutputBinding', {
trigger: trigger.generic({
type: 'httpTrigger',
authLevel: 'anonymous',
methods: ['POST'],
route: "topic/{topicName}",
name: "req"
}),
return: daprPublishOutput,
handler: async (request, context) => {
context.log("Node HTTP trigger function processed a request.");
const payload = await request.text();
context.log(JSON.stringify(payload));
return { payload: payload };
}
});
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 daprPublish:
{
"bindings":
{
"type": "daprPublish",
"direction": "out",
"name": "pubEvent",
"pubsubname": "%PubSubName%",
"topic": "B"
}
}
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
# Example to use Dapr Service Invocation Trigger and Dapr State Output binding to persist a new state into statestore
param (
$subEvent
)
Write-Host "PowerShell function processed a TransferEventBetweenTopics request from the Dapr Runtime."
# Convert the object to a JSON-formatted string with ConvertTo-Json
$jsonString = $subEvent["data"]
$messageFromTopicA = "Transfer from Topic A: $jsonString".Trim()
$publish_output_binding_req_body = @{
"payload" = $messageFromTopicA
}
# Associate values to output bindings by calling 'Push-OutputBinding'.
Push-OutputBinding -Name pubEvent -Value $publish_output_binding_req_body
Das folgende Beispiel zeigt eine Dapr Publish-Ausgabebindung, die das v2 Python-Programmiermodell verwendet. So verwenden Sie daprPublish in Ihrem Python-Funktions-App-Code:
import logging
import json
import azure.functions as func
app = func.FunctionApp()
@app.function_name(name="TransferEventBetweenTopics")
@app.dapr_topic_trigger(arg_name="subEvent", pub_sub_name="%PubSubName%", topic="A", route="A")
@app.dapr_publish_output(arg_name="pubEvent", pub_sub_name="%PubSubName%", topic="B")
def main(subEvent, pubEvent: func.Out[bytes]) -> None:
logging.info('Python function processed a TransferEventBetweenTopics request from the Dapr Runtime.')
subEvent_json = json.loads(subEvent)
payload = "Transfer from Topic A: " + str(subEvent_json["data"])
pubEvent.set(json.dumps({"payload": payload}).encode('utf-8'))
Attributes
In the in-process model, use the DaprPublish to define a Dapr publish output binding, which supports these parameters:
| function.json property | Description | Kann per Attribut gesendet werden | Kann über RequestBody gesendet werden |
|---|---|---|---|
| PubSubName | Der Name des Dapr pub/sub zum Senden der Nachricht. | ✔️ | ✔️ |
| Topic | Der Name des Themas "Dapr", um die Nachricht zu senden. | ✔️ | ✔️ |
| Payload | Required. Die Nachricht, die veröffentlicht wird. | ❌ | ✔️ |
Annotations
Mit der DaprPublishOutput Anmerkung können Sie über eine Funktion auf eine veröffentlichte Nachricht zugreifen.
| Element | Description | Kann per Attribut gesendet werden | Kann über RequestBody gesendet werden |
|---|---|---|---|
| pubSubName | Der Name des Dapr pub/sub zum Senden der Nachricht. | ✔️ | ✔️ |
| topic | Der Name des Themas "Dapr", um die Nachricht zu senden. | ✔️ | ✔️ |
| payload | Required. Die Nachricht, die veröffentlicht wird. | ❌ | ✔️ |
Configuration
Die folgende Tabelle gibt Aufschluss über die Bindungskonfigurationseigenschaften, die Sie im Code festlegen.
| Property | Description | Kann per Attribut gesendet werden | Kann über RequestBody gesendet werden |
|---|---|---|---|
| pubsubname | Der Name des Herausgeberkomponentendiensts. | ✔️ | ✔️ |
| topic | Der Name/Bezeichner des Herausgeberthemas. | ✔️ | ✔️ |
| payload | Required. Die Nachricht, die veröffentlicht wird. | ❌ | ✔️ |
The following table explains the binding configuration properties that you set in the function.json file.
| function.json property | Description | Kann per Attribut gesendet werden | Kann über RequestBody gesendet werden |
|---|---|---|---|
| pubsubname | Der Name des Herausgeberkomponentendiensts. | ✔️ | ✔️ |
| topic | Der Name/Bezeichner des Herausgeberthemas. | ✔️ | ✔️ |
| payload | Required. Die Nachricht, die veröffentlicht wird. | ❌ | ✔️ |
Die folgende Tabelle gibt Aufschluss über die Bindungskonfigurationseigenschaften für @dapp.dapr_publish_output, die Sie im Python-Code festlegen.
| Property | Description | Kann per Attribut gesendet werden | Kann über RequestBody gesendet werden |
|---|---|---|---|
| pub_sub_name | Der Name des Herausgeberereignisses. | ✔️ | ✔️ |
| topic | Der Herausgeberthemaname/-bezeichner. | ✔️ | ✔️ |
| payload | Required. Die Nachricht, die veröffentlicht wird. | ❌ | ✔️ |
Wenn Eigenschaften sowohl in Attributen als auch in RequestBody definiert sind, haben die in RequestBody bereitgestellten Daten höhere Priorität.
See the Example section for complete examples.
Usage
Um die Dapr-Ausgabebindung 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 daprPublish 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.