Share via


Apache Kafka-utlösare för Azure Functions

Du kan använda Apache Kafka-utlösaren i Azure Functions för att köra funktionskoden som svar på meddelanden i Kafka-ämnen. Du kan också använda en Kafka-utdatabindning för att skriva från din funktion till ett ämne. Information om konfiguration och konfigurationsinformation finns i Översikt över Apache Kafka-bindningar för Azure Functions.

Viktigt!

Kafka-bindningar är endast tillgängliga för Functions i planen Elastic Premium Plan and Dedicated (App Service). De stöds endast på version 3.x och senare version av Functions-körningen.

Exempel

Användningen av utlösaren beror på den C#-modalitet som används i funktionsappen, vilket kan vara något av följande lägen:

Ett isolerat arbetsprocessklassbibliotek kompilerade C#-funktioner körs i en process som är isolerad från körningen.

Vilka attribut du använder beror på den specifika händelseprovidern.

I följande exempel visas en C#-funktion som läser och loggar Kafka-meddelandet som en Kafka-händelse:

[Function("KafkaTrigger")]
public static void Run(
    [KafkaTrigger("BrokerList",
                  "topic",
                  Username = "ConfluentCloudUserName",
                  Password = "ConfluentCloudPassword",
                  Protocol = BrokerProtocol.SaslSsl,
                  AuthenticationMode = BrokerAuthenticationMode.Plain,
                  ConsumerGroup = "$Default")] string eventData, FunctionContext context)
{
    var logger = context.GetLogger("KafkaFunction");
    logger.LogInformation($"C# Kafka trigger function processed a message: {JObject.Parse(eventData)["Value"]}");
}

Om du vill ta emot händelser i en batch använder du en strängmatris som indata, som du ser i följande exempel:

[Function("KafkaTriggerMany")]
public static void Run(
    [KafkaTrigger("BrokerList",
                  "topic",
                  Username = "ConfluentCloudUserName",
                  Password = "ConfluentCloudPassword",
                  Protocol = BrokerProtocol.SaslSsl,
                  AuthenticationMode = BrokerAuthenticationMode.Plain,
                  ConsumerGroup = "$Default",
                  IsBatched = true)] string[] events, FunctionContext context)
{
    foreach (var kevent in events)
    {
        var logger = context.GetLogger("KafkaFunction");
        logger.LogInformation($"C# Kafka trigger function processed a message: {JObject.Parse(kevent)["Value"]}");
    }

Följande funktion loggar meddelandet och rubrikerna för Kafka-händelsen:

[Function("KafkaTriggerWithHeaders")]
public static void Run(
    [KafkaTrigger("BrokerList",
                  "topic",
                  Username = "ConfluentCloudUserName",
                  Password = "ConfluentCloudPassword",
                  Protocol = BrokerProtocol.SaslSsl,
                  AuthenticationMode = BrokerAuthenticationMode.Plain,
                  ConsumerGroup = "$Default")] string eventData, FunctionContext context)
{
    var eventJsonObject = JObject.Parse(eventData);
    var logger = context.GetLogger("KafkaFunction");
    logger.LogInformation($"C# Kafka trigger function processed a message: {eventJsonObject["Value"]}");
    var headersJArr = eventJsonObject["Headers"] as JArray;
    logger.LogInformation("Headers for this event: ");
    foreach (JObject header in headersJArr)
    {
        logger.LogInformation($"{header["Key"]} {System.Text.Encoding.UTF8.GetString((byte[])header["Value"])}");

    }
}

En fullständig uppsättning fungerande .NET-exempel finns i Kafka-tilläggets lagringsplats.

Kommentar

En motsvarande uppsättning TypeScript-exempel finns i Kafka-tilläggslagringsplatsen

De specifika egenskaperna för function.json-filen beror på din händelseprovider, som i dessa exempel antingen är Confluent eller Azure Event Hubs. I följande exempel visas en Kafka-utlösare för en funktion som läser och loggar ett Kafka-meddelande.

Följande function.json definierar utlösaren för den specifika providern:

{
    "bindings": [
        {
            "type": "kafkaTrigger",
            "name": "event",
            "direction": "in",
            "topic": "topic",
            "brokerList": "%BrokerList%",
            "username": "%ConfluentCloudUserName%",
            "password": "%ConfluentCloudPassword%",
            "protocol": "saslSsl",
            "authenticationMode": "plain",
            "consumerGroup" : "$Default",
            "dataType": "string"
        }
    ]
}

Följande kod körs sedan när funktionen utlöses:

module.exports = async function (context, event) {
    // context.log.info(event)
    context.log.info(`JavaScript Kafka trigger function called for message ${event.Value}`);
};

Om du vill ta emot händelser i en batch anger du cardinality värdet till many i filen function.json, enligt följande exempel:

{
    "bindings": [
        {
            "type": "kafkaTrigger",
            "name": "event",
            "direction": "in",
            "protocol" : "SASLSSL",
            "password" : "%ConfluentCloudPassword%",
            "dataType" : "string",
            "topic" : "topic",
            "authenticationMode" : "PLAIN",
            "cardinality" : "MANY",
            "consumerGroup" : "$Default",
            "username" : "%ConfluentCloudUserName%",
            "brokerList" : "%BrokerList%"
        }
    ]
}

Följande kod parsar sedan matrisen med händelser och loggar händelsedata:

module.exports = async function (context, events) {
    function print(event) {
        var eventJson = JSON.parse(event)
        context.log.info(`JavaScript Kafka trigger function called for message ${eventJson.Value}`);
    }
    events.map(print);
};

Följande kod loggar även huvuddata:

module.exports = async function (context, event) {
  function print(kevent) {
    var keventJson = JSON.parse(kevent)
    context.log.info(`JavaScript Kafka trigger function called for message ${keventJson.Value}`);
    context.log.info(`Headers for this message:`)
    let headers =  keventJson.Headers;
    headers.forEach(element => {
        context.log.info(`Key: ${element.Key} Value:${Buffer.from(element.Value, 'base64')}`) 
    });
  }
  event.map(print);
};

Du kan definiera ett allmänt Avro-schema för händelsen som skickas till utlösaren. Följande function.json definierar utlösaren för den specifika providern med ett allmänt Avro-schema:

{
  "bindings" : [ {
    "type" : "kafkaTrigger",
    "direction" : "in",
    "name" : "kafkaAvroGenericSingle",
    "protocol" : "SASLSSL",
    "password" : "ConfluentCloudPassword",
    "topic" : "topic",
    "avroSchema" : "{\"type\":\"record\",\"name\":\"Payment\",\"namespace\":\"io.confluent.examples.clients.basicavro\",\"fields\":[{\"name\":\"id\",\"type\":\"string\"},{\"name\":\"amount\",\"type\":\"double\"},{\"name\":\"type\",\"type\":\"string\"}]}",
    "authenticationMode" : "PLAIN",
    "consumerGroup" : "$Default",
    "username" : "ConfluentCloudUsername",
    "brokerList" : "%BrokerList%"
  } ]
}

Följande kod körs sedan när funktionen utlöses:

module.exports = async function (context, event) {
    context.log.info(`JavaScript Kafka trigger function called for message ${JSON.stringify(event)}`);
};

En fullständig uppsättning fungerande JavaScript-exempel finns i Kafka-tilläggets lagringsplats.

De specifika egenskaperna för function.json-filen beror på din händelseprovider, som i dessa exempel antingen är Confluent eller Azure Event Hubs. I följande exempel visas en Kafka-utlösare för en funktion som läser och loggar ett Kafka-meddelande.

Följande function.json definierar utlösaren för den specifika providern:

{
    "bindings": [
      {
            "type": "kafkaTrigger",
            "name": "kafkaEvent",
            "direction": "in",
            "protocol" : "SASLSSL",
            "password" : "%ConfluentCloudPassword%",
            "dataType" : "string",
            "topic" : "topic",
            "authenticationMode" : "PLAIN",
            "consumerGroup" : "$Default",
            "username" : "%ConfluentCloudUserName%",
            "brokerList" : "%BrokerList%",
            "sslCaLocation": "confluent_cloud_cacert.pem"
        }
    ]
}

Följande kod körs sedan när funktionen utlöses:

using namespace System.Net

param($kafkaEvent, $TriggerMetadata)

Write-Output "Powershell Kafka trigger function called for message $kafkaEvent.Value"

Om du vill ta emot händelser i en batch anger du cardinality värdet till many i filen function.json, enligt följande exempel:

{
    "bindings": [
      {
            "type": "kafkaTrigger",
            "name": "kafkaEvent",
            "direction": "in",
            "protocol" : "SASLSSL",
            "password" : "%ConfluentCloudPassword%",
            "dataType" : "string",
            "topic" : "topic",
            "authenticationMode" : "PLAIN",
            "cardinality" : "MANY",
            "consumerGroup" : "$Default",
            "username" : "%ConfluentCloudUserName%",
            "brokerList" : "%BrokerList%",
            "sslCaLocation": "confluent_cloud_cacert.pem"
        }
    ]
}

Följande kod parsar sedan matrisen med händelser och loggar händelsedata:

using namespace System.Net

param($kafkaEvents, $TriggerMetadata)

$kafkaEvents
foreach ($kafkaEvent in $kafkaEvents) {
    $event = $kafkaEvent | ConvertFrom-Json -AsHashtable
    Write-Output "Powershell Kafka trigger function called for message $event.Value"
}

Följande kod loggar även huvuddata:

using namespace System.Net

param($kafkaEvents, $TriggerMetadata)

foreach ($kafkaEvent in $kafkaEvents) {
    $kevent = $kafkaEvent | ConvertFrom-Json -AsHashtable
    Write-Output "Powershell Kafka trigger function called for message $kevent.Value"
    Write-Output "Headers for this message:"
    foreach ($header in $kevent.Headers) {
        $DecodedValue = [System.Text.Encoding]::Unicode.GetString([System.Convert]::FromBase64String($header.Value))
        $Key = $header.Key
        Write-Output "Key: $Key Value: $DecodedValue"
    }
}

Du kan definiera ett allmänt Avro-schema för händelsen som skickas till utlösaren. Följande function.json definierar utlösaren för den specifika providern med ett allmänt Avro-schema:

{
  "bindings" : [ {
    "type" : "kafkaTrigger",
    "direction" : "in",
    "name" : "kafkaEvent",
    "protocol" : "SASLSSL",
    "password" : "ConfluentCloudPassword",
    "topic" : "topic",
    "authenticationMode" : "PLAIN",
    "avroSchema" : "{\"type\":\"record\",\"name\":\"Payment\",\"namespace\":\"io.confluent.examples.clients.basicavro\",\"fields\":[{\"name\":\"id\",\"type\":\"string\"},{\"name\":\"amount\",\"type\":\"double\"},{\"name\":\"type\",\"type\":\"string\"}]}",
    "consumerGroup" : "$Default",
    "username" : "ConfluentCloudUsername",
    "brokerList" : "%BrokerList%"
  } ]
}

Följande kod körs sedan när funktionen utlöses:

using namespace System.Net

param($kafkaEvent, $TriggerMetadata)

Write-Output "Powershell Kafka trigger function called for message $kafkaEvent.Value"

En fullständig uppsättning fungerande PowerShell-exempel finns i Kafka-tilläggets lagringsplats.

De specifika egenskaperna för function.json-filen beror på din händelseprovider, som i dessa exempel antingen är Confluent eller Azure Event Hubs. I följande exempel visas en Kafka-utlösare för en funktion som läser och loggar ett Kafka-meddelande.

Följande function.json definierar utlösaren för den specifika providern:

{
      "scriptFile": "main.py",
      "bindings": [
        {
          "type": "kafkaTrigger",
          "name": "kevent",
          "topic": "topic",
          "brokerList": "%BrokerList%",
          "username": "%ConfluentCloudUserName%",
          "password": "%ConfluentCloudPassword%",
          "consumerGroup" : "functions",
          "protocol": "saslSsl",
          "authenticationMode": "plain"
        }
    ]
}

Följande kod körs sedan när funktionen utlöses:

import logging
from azure.functions import KafkaEvent

def main(kevent : KafkaEvent):
    logging.info(kevent.get_body().decode('utf-8'))
    logging.info(kevent.metadata)

Om du vill ta emot händelser i en batch anger du cardinality värdet till many i filen function.json, enligt följande exempel:

{
      "scriptFile": "main.py",
      "bindings": [
        {
            "type" : "kafkaTrigger",
            "direction": "in",
            "name" : "kevents",
            "protocol" : "SASLSSL",
            "password" : "%ConfluentCloudPassword%",
            "topic" : "message_python",
            "authenticationMode" : "PLAIN",
            "cardinality" : "MANY",
            "dataType": "string",
            "consumerGroup" : "$Default",
            "username" : "%ConfluentCloudUserName%",
            "BrokerList" : "%BrokerList%"    
        }
    ]
}

Följande kod parsar sedan matrisen med händelser och loggar händelsedata:

import logging
import typing
from azure.functions import KafkaEvent

def main(kevents : typing.List[KafkaEvent]):
    for event in kevents:
        logging.info(event.get_body())

Följande kod loggar även huvuddata:

import logging
import typing
from azure.functions import KafkaEvent
import json
import base64

def main(kevents : typing.List[KafkaEvent]):
    for event in kevents:
        event_dec = event.get_body().decode('utf-8')
        event_json = json.loads(event_dec)
        logging.info("Python Kafka trigger function called for message " + event_json["Value"])
        headers = event_json["Headers"]
        for header in headers:
            logging.info("Key: "+ header['Key'] + " Value: "+ str(base64.b64decode(header['Value']).decode('ascii')))

Du kan definiera ett allmänt Avro-schema för händelsen som skickas till utlösaren. Följande function.json definierar utlösaren för den specifika providern med ett allmänt Avro-schema:

{
  "scriptFile": "main.py",
  "bindings" : [ {
    "type" : "kafkaTrigger",
    "direction" : "in",
    "name" : "kafkaTriggerAvroGeneric",
    "protocol" : "SASLSSL",
    "password" : "ConfluentCloudPassword",
    "topic" : "topic",
    "authenticationMode" : "PLAIN",
    "avroSchema" : "{\"type\":\"record\",\"name\":\"Payment\",\"namespace\":\"io.confluent.examples.clients.basicavro\",\"fields\":[{\"name\":\"id\",\"type\":\"string\"},{\"name\":\"amount\",\"type\":\"double\"},{\"name\":\"type\",\"type\":\"string\"}]}",
    "consumerGroup" : "$Default",
    "username" : "ConfluentCloudUsername",
    "brokerList" : "%BrokerList%"
  } ]
}

Följande kod körs sedan när funktionen utlöses:

import logging
from azure.functions import KafkaEvent

def main(kafkaTriggerAvroGeneric : KafkaEvent):
    logging.info(kafkaTriggerAvroGeneric.get_body().decode('utf-8'))
    logging.info(kafkaTriggerAvroGeneric.metadata)

En fullständig uppsättning fungerande Python-exempel finns i Kafka-tilläggslagringsplatsen.

De anteckningar som du använder för att konfigurera utlösaren beror på den specifika händelseprovidern.

I följande exempel visas en Java-funktion som läser och loggar innehållet i Kafka-händelsen:

@FunctionName("KafkaTrigger")
public void runSingle(
        @KafkaTrigger(
            name = "KafkaTrigger",
            topic = "topic",  
            brokerList="%BrokerList%",
            consumerGroup="$Default", 
            username = "%ConfluentCloudUsername%", 
            password = "ConfluentCloudPassword",
            authenticationMode = BrokerAuthenticationMode.PLAIN,
            protocol = BrokerProtocol.SASLSSL,
            // sslCaLocation = "confluent_cloud_cacert.pem", // Enable this line for windows.
            dataType = "string"
         ) String kafkaEventData,
        final ExecutionContext context) {
        context.getLogger().info(kafkaEventData);
}

Om du vill ta emot händelser i en batch använder du en indatasträng som en matris, enligt följande exempel:

@FunctionName("KafkaTriggerMany")
public void runMany(
        @KafkaTrigger(
            name = "kafkaTriggerMany",
            topic = "topic",  
            brokerList="%BrokerList%",
            consumerGroup="$Default", 
            username = "%ConfluentCloudUsername%", 
            password = "ConfluentCloudPassword",
            authenticationMode = BrokerAuthenticationMode.PLAIN,
            protocol = BrokerProtocol.SASLSSL,
            // sslCaLocation = "confluent_cloud_cacert.pem", // Enable this line for windows.
            cardinality = Cardinality.MANY,
            dataType = "string"
         ) String[] kafkaEvents,
        final ExecutionContext context) {
        for (String kevent: kafkaEvents) {
            context.getLogger().info(kevent);
        }    
}

Följande funktion loggar meddelandet och rubrikerna för Kafka-händelsen:

@FunctionName("KafkaTriggerManyWithHeaders")
public void runSingle(
        @KafkaTrigger(
            name = "KafkaTrigger",
            topic = "topic",  
            brokerList="%BrokerList%",
            consumerGroup="$Default", 
            username = "%ConfluentCloudUsername%", 
            password = "ConfluentCloudPassword",
            authenticationMode = BrokerAuthenticationMode.PLAIN,
            protocol = BrokerProtocol.SASLSSL,
            // sslCaLocation = "confluent_cloud_cacert.pem", // Enable this line for windows.
            dataType = "string",
            cardinality = Cardinality.MANY
         ) List<String> kafkaEvents,
        final ExecutionContext context) {
            Gson gson = new Gson(); 
            for (String keventstr: kafkaEvents) {
                KafkaEntity kevent = gson.fromJson(keventstr, KafkaEntity.class);
                context.getLogger().info("Java Kafka trigger function called for message: " + kevent.Value);
                context.getLogger().info("Headers for the message:");
                for (KafkaHeaders header : kevent.Headers) {
                    String decodedValue = new String(Base64.getDecoder().decode(header.Value));
                    context.getLogger().info("Key:" + header.Key + " Value:" + decodedValue);                    
                }                
            }
        }

Du kan definiera ett allmänt Avro-schema för händelsen som skickas till utlösaren. Följande funktion definierar en utlösare för den specifika providern med ett allmänt Avro-schema:

private static final String schema = "{\"type\":\"record\",\"name\":\"Payment\",\"namespace\":\"io.confluent.examples.clients.basicavro\",\"fields\":[{\"name\":\"id\",\"type\":\"string\"},{\"name\":\"amount\",\"type\":\"double\"},{\"name\":\"type\",\"type\":\"string\"}]}";

@FunctionName("KafkaAvroGenericTrigger")
public void runOne(
        @KafkaTrigger(
                name = "kafkaAvroGenericSingle",
                topic = "topic",
                brokerList="%BrokerList%",
                consumerGroup="$Default",
                username = "ConfluentCloudUsername",
                password = "ConfluentCloudPassword",
                avroSchema = schema,
                authenticationMode = BrokerAuthenticationMode.PLAIN,
                protocol = BrokerProtocol.SASLSSL) Payment payment,
        final ExecutionContext context) {
    context.getLogger().info(payment.toString());
}

En fullständig uppsättning fungerande Java-exempel för Confluent finns i Kafka-tilläggets lagringsplats.

Attribut

C#-bibliotek för både process- och isolerad arbetsprocess använder för att definiera funktionsutlösaren KafkaTriggerAttribute .

I följande tabell förklaras de egenskaper som du kan ange med hjälp av det här utlösarattributet:

Parameter Description
BrokerList (Krävs) Listan över Kafka-koordinatorer som övervakas av utlösaren. Mer information finns i Anslut ions.
Avsnitt (Krävs) Det ämne som övervakas av utlösaren.
ConsumerGroup (Valfritt) Kafka-konsumentgrupp som används av utlösaren.
AvroSchema (Valfritt) Schema för en allmän post när du använder Avro-protokollet.
AuthenticationMode (Valfritt) Autentiseringsläget när du använder SASL-autentisering (Simple Authentication and Security Layer). De värden som stöds är Gssapi, Plain (standard), ScramSha256, . ScramSha512
Användarnamn (Valfritt) Användarnamnet för SASL-autentisering. Stöds inte när AuthenticationMode är Gssapi. Mer information finns i Anslut ions.
Lösenord (Valfritt) Lösenordet för SASL-autentisering. Stöds inte när AuthenticationMode är Gssapi. Mer information finns i Anslut ions.
Protokoll (Valfritt) Säkerhetsprotokollet som används vid kommunikation med asynkrona meddelandeköer. De värden som stöds är plaintext (standard), ssl, sasl_plaintext, sasl_ssl.
SslCaLocation (Valfritt) Sökväg till CA-certifikatfilen för att verifiera asynkron meddelandekös certifikat.
SslCertificateLocation (Valfritt) Sökväg till klientens certifikat.
SslKeyLocation (Valfritt) Sökväg till klientens privata nyckel (PEM) som används för autentisering.
SslKeyPassword (Valfritt) Lösenord för klientens certifikat.

Kommentarer

Med anteckningen KafkaTrigger kan du skapa en funktion som körs när ett ämne tas emot. Alternativen som stöds omfattar följande element:

Element Description
Namn (Krävs) Namnet på variabeln som representerar kön eller ämnesmeddelandet i funktionskoden.
brokerList (Krävs) Listan över Kafka-koordinatorer som övervakas av utlösaren. Mer information finns i Anslut ions.
Avsnitt (Krävs) Det ämne som övervakas av utlösaren.
Kardinalitet (Valfritt) Anger kardinaliteten för utlösarindata. De värden som stöds är ONE (standard) och MANY. Använd ONE när indata är ett enda meddelande och MANY när indata är en matris med meddelanden. När du använder MANYmåste du också ange en dataType.
Datatyp Definierar hur Functions hanterar parametervärdet. Som standard hämtas värdet som en sträng och Functions försöker deserialisera strängen till det faktiska oformaterade Java-objektet (POJO). När stringbehandlas indata som bara en sträng. När binarytas meddelandet emot som binära data och Functions försöker deserialisera det till en faktisk parametertyp byte[].
consumerGroup (Valfritt) Kafka-konsumentgrupp som används av utlösaren.
avroSchema (Valfritt) Schema för en allmän post när du använder Avro-protokollet.
authenticationMode (Valfritt) Autentiseringsläget när du använder SASL-autentisering (Simple Authentication and Security Layer). De värden som stöds är Gssapi, Plain (standard), ScramSha256, . ScramSha512
Användarnamn (Valfritt) Användarnamnet för SASL-autentisering. Stöds inte när AuthenticationMode är Gssapi. Mer information finns i Anslut ions.
Lösenord (Valfritt) Lösenordet för SASL-autentisering. Stöds inte när AuthenticationMode är Gssapi. Mer information finns i Anslut ions.
Protokollet (Valfritt) Säkerhetsprotokollet som används vid kommunikation med asynkrona meddelandeköer. De värden som stöds är plaintext (standard), ssl, sasl_plaintext, sasl_ssl.
sslCaLocation (Valfritt) Sökväg till CA-certifikatfilen för att verifiera asynkron meddelandekös certifikat.
sslCertificateLocation (Valfritt) Sökväg till klientens certifikat.
sslKeyLocation (Valfritt) Sökväg till klientens privata nyckel (PEM) som används för autentisering.
sslKeyPassword (Valfritt) Lösenord för klientens certifikat.

Konfiguration

I följande tabell förklaras de bindningskonfigurationsegenskaper som du anger i filen function.json .

egenskapen function.json beskrivning
typ (Krävs) Måste anges till kafkaTrigger.
riktning (Krävs) Måste anges till in.
Namn (Krävs) Namnet på variabeln som representerar de asynkrona data i funktionskoden.
brokerList (Krävs) Listan över Kafka-koordinatorer som övervakas av utlösaren. Mer information finns i Anslut ions.
Avsnitt (Krävs) Det ämne som övervakas av utlösaren.
Kardinalitet (Valfritt) Anger kardinaliteten för utlösarindata. De värden som stöds är ONE (standard) och MANY. Använd ONE när indata är ett enda meddelande och MANY när indata är en matris med meddelanden. När du använder MANYmåste du också ange en dataType.
Datatyp Definierar hur Functions hanterar parametervärdet. Som standard hämtas värdet som en sträng och Functions försöker deserialisera strängen till det faktiska oformaterade Java-objektet (POJO). När stringbehandlas indata som bara en sträng. När binarytas meddelandet emot som binära data och Functions försöker deserialisera det till en faktisk parametertyp byte[].
consumerGroup (Valfritt) Kafka-konsumentgrupp som används av utlösaren.
avroSchema (Valfritt) Schema för en allmän post när du använder Avro-protokollet.
authenticationMode (Valfritt) Autentiseringsläget när du använder SASL-autentisering (Simple Authentication and Security Layer). De värden som stöds är Gssapi, Plain (standard), ScramSha256, . ScramSha512
Användarnamn (Valfritt) Användarnamnet för SASL-autentisering. Stöds inte när AuthenticationMode är Gssapi. Mer information finns i Anslut ions.
Lösenord (Valfritt) Lösenordet för SASL-autentisering. Stöds inte när AuthenticationMode är Gssapi. Mer information finns i Anslut ions.
Protokollet (Valfritt) Säkerhetsprotokollet som används vid kommunikation med asynkrona meddelandeköer. De värden som stöds är plaintext (standard), ssl, sasl_plaintext, sasl_ssl.
sslCaLocation (Valfritt) Sökväg till CA-certifikatfilen för att verifiera asynkron meddelandekös certifikat.
sslCertificateLocation (Valfritt) Sökväg till klientens certifikat.
sslKeyLocation (Valfritt) Sökväg till klientens privata nyckel (PEM) som används för autentisering.
sslKeyPassword (Valfritt) Lösenord för klientens certifikat.

Användning

Kafka-händelser stöds för närvarande som strängar och strängmatriser som är JSON-nyttolaster.

Kafka-meddelanden skickas till funktionen som strängar och strängmatriser som är JSON-nyttolaster.

I en Premium-plan måste du aktivera körningsskalningsövervakning för att Kafka-utdata ska kunna skalas ut till flera instanser. Mer information finns i Aktivera körningsskalning.

Du kan inte använda funktionen Test/Körsidan Kod + Test i Azure-portalen för att arbeta med Kafka-utlösare. Du måste i stället skicka testhändelser direkt till det ämne som övervakas av utlösaren.

En fullständig uppsättning host.json inställningar som stöds för Kafka-utlösaren finns i host.json inställningar.

anslutningar

All anslutningsinformation som krävs av dina utlösare och bindningar ska bevaras i programinställningarna och inte i bindningsdefinitionerna i koden. Detta gäller för autentiseringsuppgifter, som aldrig ska lagras i koden.

Viktigt!

Inställningar för autentiseringsuppgifter måste referera till en programinställning. Hårdkoda inte autentiseringsuppgifter i koden eller konfigurationsfilerna. När du kör lokalt använder du filen local.settings.json för dina autentiseringsuppgifter och publicerar inte local.settings.json-filen.

När du ansluter till ett hanterat Kafka-kluster som tillhandahålls av Confluent i Azure kontrollerar du att följande autentiseringsuppgifter för Confluent Cloud-miljön anges i utlösaren eller bindningen:

Inställning Rekommenderat värde beskrivning
BrokerList BootstrapServer Appinställningen med namnet BootstrapServer innehåller värdet för bootstrap-servern som finns på sidan Inställningar för Confluent Cloud. Värdet liknar xyz-xyzxzy.westeurope.azure.confluent.cloud:9092.
Användarnamn ConfluentCloudUsername Appinställningen med namnet ConfluentCloudUsername innehåller API-åtkomstnyckeln från Confluent Cloud-webbplatsen.
Lösenord ConfluentCloudPassword Appinställningen med namnet ConfluentCloudPassword innehåller API-hemligheten som hämtats från Confluent Cloud-webbplatsen.

Strängvärdena som du använder för de här inställningarna måste finnas som programinställningar i Azure eller i Values samlingen i filen local.settings.json under den lokala utvecklingen.

Du bör också ange Protocol, AuthenticationModeoch SslCaLocation i bindningsdefinitionerna.

Nästa steg