Aracılığıyla paylaş


Azure İşlevleri için Dapr Hizmet Çağırma tetikleyicisi

Azure İşlevleri, aşağıdaki Dapr olayları kullanılarak bir Dapr hizmeti çağrısında tetiklenebilir.

Dapr uzantısının kurulum ve yapılandırma ayrıntıları hakkında bilgi için bkz. Dapr uzantısına genel bakış.

Örnek

C# işlevi aşağıdaki C# modlarından biri kullanılarak oluşturulabilir:

Yürütme modeli Açıklama
Yalıtılmış çalışan modeli İşlev kodunuz ayrı bir .NET çalışan işleminde çalışır. Desteklenen .NET ve .NET Framework sürümleriyle kullanın. Daha fazla bilgi edinmek için bkz . .NET yalıtılmış çalışan işlemi işlevleri geliştirme.
İşlem içi model İşlev kodunuz İşlevler konak işlemiyle aynı işlemde çalışır. .NET'in yalnızca Uzun Süreli Destek (LTS) sürümlerini destekler. Daha fazla bilgi edinmek için bkz . .NET sınıf kitaplığı işlevleri geliştirme.
[FunctionName("CreateNewOrder")]
public static void Run(
    [DaprServiceInvocationTrigger] JObject payload,
    [DaprState("%StateStoreName%", Key = "order")] out JToken order,
    ILogger log)
{
    log.LogInformation("C# function processed a CreateNewOrder request from the Dapr Runtime.");

    // payload must be of the format { "data": { "value": "some value" } }
    order = payload["data"];
}

Dapr Hizmeti Çağırma tetikleyicisi için Java kodu aşağıdadır:

@FunctionName("CreateNewOrder")
public String run(
        @DaprServiceInvocationTrigger(
            methodName = "CreateNewOrder") 
)

app öğesini kaydetmek daprInvokeOutputiçin nesnesini kullanın:

const { app, trigger } = require('@azure/functions');

app.generic('InvokeOutputBinding', {
    trigger: trigger.generic({
        type: 'httpTrigger',
        authLevel: 'anonymous',
        methods: ['POST'],
        route: "invoke/{appId}/{methodName}",
        name: "req"
    }),
    return: daprInvokeOutput,
    handler: async (request, context) => {
        context.log("Node HTTP trigger function processed a request.");

        const payload = await request.text();
        context.log(JSON.stringify(payload));

        return { body: payload };
    }
});

Aşağıdaki örneklerde, function.json dosyasındaki Dapr tetikleyicileri ve bu bağlamaları kullanan PowerShell kodu gösterilmektedir.

için function.json dosyası aşağıdadır:daprServiceInvocationTrigger

{
  "bindings": [
    {
      "type": "daprServiceInvocationTrigger",
      "name": "payload",
      "direction": "in"
    }
  ]
}

function.json dosya özellikleri hakkında daha fazla bilgi için Yapılandırma bölümüne bakın.

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 (
    $payload
)

# C# function processed a CreateNewOrder request from the Dapr Runtime.
Write-Host "PowerShell function processed a CreateNewOrder request from the Dapr Runtime."

# Payload must be of the format { "data": { "value": "some value" } }

# Convert the object to a JSON-formatted string with ConvertTo-Json
$jsonString = $payload| ConvertTo-Json

# Associate values to output bindings by calling 'Push-OutputBinding'.
Push-OutputBinding -Name order -Value $payload["data"]

Aşağıdaki örnekte, v2 Python programlama modelini kullanan bir Dapr Hizmet Çağırma tetikleyicisi gösterilmektedir. Python işlev uygulama kodunuzda öğesini kullanmak daprServiceInvocationTrigger için:

import logging
import json
import azure.functions as func

app = func.FunctionApp()

@app.function_name(name="RetrieveOrder")
@app.dapr_service_invocation_trigger(arg_name="payload", method_name="RetrieveOrder")
@app.dapr_state_input(arg_name="data", state_store="statestore", key="order")
def main(payload, data: str) :
    # Function should be invoked with this command: dapr invoke --app-id functionapp --method RetrieveOrder  --data '{}'
    logging.info('Python function processed a RetrieveOrder request from the Dapr Runtime.')
    logging.info(data)

Özellikler

İşlem içi modelde, aşağıdaki özellikleri destekleyen bir Dapr hizmeti çağırma bağlamasını tetiklerken kullanınDaprServiceInvocationTrigger.

Parametre Açıklama
Methodname isteğe bağlı. Dapr çağıranın kullanması gereken yöntemin adı. Belirtilmezse, işlevin adı yöntem adı olarak kullanılır.

Ek Açıklamalar

Ek açıklama, DaprServiceInvocationTrigger Dapr çalışma zamanı tarafından çağrılan bir işlev oluşturmanıza olanak tanır.

Öğe Açıklama
Methodname Yöntem adı.

Yapılandırma

Aşağıdaki tabloda kodda ayarladığınız bağlama yapılandırma özellikleri açıklanmaktadır.

Özellik Açıklama
type olarak ayarlanmalıdır daprServiceInvocationTrigger.
Adı İşlev kodundaki Dapr verilerini temsil eden değişkenin adı.

Aşağıdaki tabloda, function.json dosyasında ayarladığınız bağlama yapılandırma özellikleri açıklanmaktadır.

function.json özelliği Açıklama
type olarak ayarlanmalıdır daprServiceInvocationTrigger.
Adı İşlev kodundaki Dapr verilerini temsil eden değişkenin adı.

Aşağıdaki tabloda Python kodunuzda ayarladığınız bağlama yapılandırma özellikleri @dapp.dapr_service_invocation_trigger açıklanmaktadır.

Özellik Açıklama
method_name Dapr verilerini temsil eden değişkenin adı.

Tam örnekler için Örnek bölümüne bakın.

Kullanım

Dapr Hizmet Çağırma tetikleyicisini kullanmak için, resmi Dapr belgelerinde Hizmet Çağırma tetikleyicisiyle kullanılacak bileşenler ve bunların nasıl ayarlanacağı hakkında daha fazla bilgi edinin.

python v2'de kullanmak daprServiceInvocationTrigger için projenizi doğru bağımlılıklarla ayarlayın.

  1. Sanal ortam oluşturma ve etkinleştirme.

  2. Dosyanıza requirements.text aşağıdaki satırı ekleyin:

    azure-functions==1.18.0b3
    
  3. Terminalde Python kitaplığını yükleyin.

    pip install -r .\requirements.txt
    
  4. Dosyanızı local.setting.json aşağıdaki yapılandırmayla değiştirin:

    "PYTHON_ISOLATE_WORKER_DEPENDENCIES":1
    

Sonraki adımlar

Dapr hizmeti çağırma hakkında daha fazla bilgi edinin.