Az Azure Event Hubs-kötések Azure FunctionsAzure Event Hubs bindings for Azure Functions

Ez a cikk azt ismerteti, hogyan használhatók az Azure Event Hubs -kötések a Azure Functionshoz.This article explains how to work with Azure Event Hubs bindings for Azure Functions. Azure Functions támogatja az aktiválási és kimeneti kötéseket a Event Hubshoz.Azure Functions supports trigger and output bindings for Event Hubs.

Ez az információ az Azure Functions-fejlesztők számára.This is reference information for Azure Functions developers. Ha most ismerkedik az Azure Functions, indítsa el az alábbi forrásanyagokat:If you're new to Azure Functions, start with the following resources:

Csomagok – 1.x függvényekPackages - Functions 1.x

Az 1. x Azure Functions-es verzióban a Event Hubs kötések a Microsoft. Azure. webjobs. ServiceBus NuGet csomagban találhatók, 2. x verzióban.For Azure Functions version 1.x, the Event Hubs bindings are provided in the Microsoft.Azure.WebJobs.ServiceBus NuGet package, version 2.x. A csomag forráskódja a azure-webjobs-sdk GitHub-adattárban.Source code for the package is in the azure-webjobs-sdk GitHub repository.

Az alábbi táblázat bemutatja, hogyan lehet ezt a kötést támogatása hozzáadva minden fejlesztési környezetben.The following table tells how to add support for this binding in each development environment.

Fejlesztési környezetDevelopment environment A támogatás hozzáadásaTo add support in
Functions 1.xFunctions 1.x
Helyi fejlesztés – C# osztálytárLocal development - C# class library A csomag telepítéseInstall the package
Helyi fejlesztés – C# parancsfájl, JavaScript,F#Local development - C# script, JavaScript, F# AutomatikusAutomatic
A fejlesztői portálPortal development AutomatikusAutomatic

Csomagok – 2.x függvényekPackages - Functions 2.x

A 2. x függvények esetében használja a Microsoft. Azure. webjobs. Extensions. EventHubs csomagot, 3. x verziót.For Functions 2.x, use the Microsoft.Azure.WebJobs.Extensions.EventHubs package, version 3.x. A csomag forráskódja a azure-webjobs-sdk GitHub-adattárban.Source code for the package is in the azure-webjobs-sdk GitHub repository.

Az alábbi táblázat bemutatja, hogyan lehet ezt a kötést támogatása hozzáadva minden fejlesztési környezetben.The following table tells how to add support for this binding in each development environment.

Fejlesztési környezetDevelopment environment A támogatás hozzáadásaTo add support in
Functions 2.xFunctions 2.x
Helyi fejlesztés – C# osztálytárLocal development - C# class library A csomag telepítéseInstall the package
Helyi fejlesztés – C# parancsfájl, JavaScript, F#, Java és Python nyelvenLocal development - C# script, JavaScript, F#, Java and Python A bővítmény regisztrálásaRegister the extension
A fejlesztői portálPortal development Telepítse a kimeneti kötés hozzáadása soránInstall when adding output binding

Megtudhatja, hogyan lehet frissíteni a létező kötés bővítmények a portálon való ismételt közzétételéhez a függvényalkalmazás projektjét nélkül, tekintse meg a a bővítmények frissítése.To learn how to update existing binding extensions in the portal without having to republish your function app project, see Update your extensions.

EseményindítóTrigger

Az Event hub Event streambe küldött eseményre való reagáláshoz használja a függvény eseményindítóját.Use the function trigger to respond to an event sent to an event hub event stream. Az eseményindító beállításához olvasási hozzáféréssel kell rendelkeznie a mögöttes Event hub-hoz.You must have read access to the underlying event hub to set up the trigger. A függvény elindításakor a függvénynek átadott üzenet karakterláncként van beírva.When the function is triggered, the message passed to the function is typed as a string.

Trigger – skálázásTrigger - scaling

Egy esemény által aktivált függvény minden példányát egyetlen EventProcessorHost -példány támogatja.Each instance of an event triggered function is backed by a single EventProcessorHost instance. A trigger (Event Hubs) biztosítja, hogy csak egy EventProcessorHost -példány kapjon bérletet egy adott partíción.The trigger (powered by Event Hubs) ensures that only one EventProcessorHost instance can get a lease on a given partition.

Vegyünk például egy Event hub-t az alábbiak szerint:For example, consider an Event Hub as follows:

  • 10 partíció10 partitions
  • 1 000 az összes partíción egyenletesen elosztott események, 100-es üzenetekkel az egyes partíciók között1,000 events distributed evenly across all partitions, with 100 messages in each partition

A függvény első engedélyezésekor a függvénynek csak egy példánya van.When your function is first enabled, there is only one instance of the function. Hívjuk meg az első függvény példányát Function_0.Let's call the first function instance Function_0. A Function_0 függvény egyetlen EventProcessorHost -példánnyal rendelkezik, amely minden tíz partíción rendelkezik bérlettel.The Function_0 function has a single instance of EventProcessorHost that holds a lease on all ten partitions. Ez a példány az 0-9-es partíciókhoz származó eseményeket olvas.This instance is reading events from partitions 0-9. Ettől a ponttól kezdve a következők egyike történik:From this point forward, one of the following happens:

  • Az új függvények példányai nemszükségesek Function_0 : az összes 1 000 eseményt feldolgozhatja, mielőtt a függvények skálázási logikája érvénybe lép.New function instances are not needed: Function_0 is able to process all 1,000 events before the Functions scaling logic take effect. Ebben az esetben a rendszer az összes 1 000 üzenetet dolgozza Function_0fel.In this case, all 1,000 messages are processed by Function_0.

  • További függvény-példány hozzáadása: Ha a függvények skálázási logikája meghatározza Function_0 , hogy több üzenet van, mint amennyit feldolgozhat, egy új FunctionFunction_1App-példány () jön létre.An additional function instance is added: If the Functions scaling logic determines that Function_0 has more messages than it can process, a new function app instance (Function_1) is created. Ez az új függvény a EventProcessorHosttársított példányával is rendelkezik.This new function also has an associated instance of EventProcessorHost. Mivel az alapul szolgáló Event Hubs azt vizsgálja, hogy egy új gazdagép-példány próbálkozik az olvasási üzenetekkel, a terheléselosztás a gazdagép példányain tárolja a partíciókat.As the underlying Event Hubs detect that a new host instance is trying read messages, it load balances the partitions across the its host instances. Előfordulhat például, hogy a 0-4-es partíciók hozzá vannak rendelve Function_1a Function_0 5-9-es partícióhoz.For example, partitions 0-4 may be assigned to Function_0 and partitions 5-9 to Function_1.

  • N további függvény-példányok lettek hozzáadva: Ha a függvények skálázási logikája meghatározza, Function_0 hogy Function_1 a és a rendszer több üzenetet is feldolgozzon, akkor az új Functions_N Function app-példányok jönnek létre.N more function instances are added: If the Functions scaling logic determines that both Function_0 and Function_1 have more messages than they can process, new Functions_N function app instances are created. Az alkalmazások arra a pontra jönnek N létre, ahol a nagyobb, mint az Event hub-partíciók száma.Apps are created to the point where N is greater than the number of event hub partitions. A példánkban Event Hubs újra a partíciók elosztása, ebben az esetben a példányok Function_0között... Functions_9.In our example, Event Hubs again load balances the partitions, in this case across the instances Function_0...Functions_9.

A függvények skálázásakor N a példányok száma nagyobb, mint az Event hub-partíciók száma.When Functions scales, N instances is a number greater than the number of event hub partitions. Ezzel biztosítható, hogy a EventProcessorHost -példányok elérhetők legyenek a partíciók zárolásának beszerzéséhez, mivel azok más példányokból elérhetővé válnak.This is done to ensure EventProcessorHost instances are available to obtain locks on partitions as they become available from other instances. Csak a függvény példányának végrehajtásakor használt erőforrásokért kell fizetnie.You are only charged for the resources used when the function instance executes. Más szóval nem számítunk fel díjat a kiépítés során.In other words, you are not charged for this over-provisioning.

Ha az összes függvény végrehajtása befejeződött (hibákkal vagy anélkül), a rendszer ellenőrzőpontokat ad hozzá a társított Storage-fiókhoz.When all function execution completes (with or without errors), checkpoints are added to the associated storage account. Ha a pipa sikeres, a rendszer az összes 1 000 üzenetet soha nem kéri le.When check-pointing succeeds, all 1,000 messages are never retrieved again.

Az eseményindító – példaTrigger - example

Tekintse meg az adott nyelvű példa:See the language-specific example:

Eseményindító - C#-példaTrigger - C# example

Az alábbi példa egy C# függvényt mutat be, amely az Event hub eseményindítójának üzenet törzsét naplózza.The following example shows a C# function that logs the message body of the event hub trigger.

[FunctionName("EventHubTriggerCSharp")]
public static void Run([EventHubTrigger("samples-workitems", Connection = "EventHubConnectionAppSetting")] string myEventHubMessage, ILogger log)
{
    log.LogInformation($"C# function triggered to process a message: {myEventHubMessage}");
}

Ahhoz, hogy hozzáférést kapjon az esemény metaadataihoz a Function Code-ban, kötést kell kötnie egy Microsoft.Azure.EventHubs EventData -objektumhoz (a használatához a using utasítás szükséges).To get access to event metadata in function code, bind to an EventData object (requires a using statement for Microsoft.Azure.EventHubs). Ugyanezeket a tulajdonságokat a metódus aláírása kötési kifejezések használatával is elérheti.You can also access the same properties by using binding expressions in the method signature. Az alábbi példa mindkét módszert mutatja be, hogy ugyanazokat az eszközöket kapja:The following example shows both ways to get the same data:

[FunctionName("EventHubTriggerCSharp")]
public static void Run(
    [EventHubTrigger("samples-workitems", Connection = "EventHubConnectionAppSetting")] EventData myEventHubMessage,
    DateTime enqueuedTimeUtc,
    Int64 sequenceNumber,
    string offset,
    ILogger log)
{
    log.LogInformation($"Event: {Encoding.UTF8.GetString(myEventHubMessage.Body)}");
    // Metadata accessed by binding to EventData
    log.LogInformation($"EnqueuedTimeUtc={myEventHubMessage.SystemProperties.EnqueuedTimeUtc}");
    log.LogInformation($"SequenceNumber={myEventHubMessage.SystemProperties.SequenceNumber}");
    log.LogInformation($"Offset={myEventHubMessage.SystemProperties.Offset}");
    // Metadata accessed by using binding expressions in method parameters
    log.LogInformation($"EnqueuedTimeUtc={enqueuedTimeUtc}");
    log.LogInformation($"SequenceNumber={sequenceNumber}");
    log.LogInformation($"Offset={offset}");
}

Ha egy kötegben szeretne eseményeket fogadni, string végezze el vagy EventData egy tömböt.To receive events in a batch, make string or EventData an array.

Megjegyzés

Egy kötegben való fogadáskor nem lehet olyan metódusokhoz kötni, mint például a fenti DateTime enqueuedTimeUtc példában, és meg kell kapnia ezeket az egyes EventData objektumokból.When receiving in a batch you cannot bind to method parameters like in the above example with DateTime enqueuedTimeUtc and must receive these from each EventData object

[FunctionName("EventHubTriggerCSharp")]
public static void Run([EventHubTrigger("samples-workitems", Connection = "EventHubConnectionAppSetting")] EventData[] eventHubMessages, ILogger log)
{
    foreach (var message in eventHubMessages)
    {
        log.LogInformation($"C# function triggered to process a message: {Encoding.UTF8.GetString(message.Body)}");
        log.LogInformation($"EnqueuedTimeUtc={message.SystemProperties.EnqueuedTimeUtc}");
    }
}

Eseményindító - C#-szkript példaTrigger - C# script example

Az alábbi példa egy Event hub eseményindító-kötést mutat be egy function. JSON fájlban, valamint egy olyan C# parancsfájl -függvényt, amely a kötést használja.The following example shows an event hub trigger binding in a function.json file and a C# script function that uses the binding. A függvény naplózza az Event hub eseményindítójának üzenet törzsét.The function logs the message body of the event hub trigger.

Az alábbi példák a function. JSON fájlban Event Hubs kötési adataikat mutatják be.The following examples show Event Hubs binding data in the function.json file.

2-es verzió. xVersion 2.x

{
  "type": "eventHubTrigger",
  "name": "myEventHubMessage",
  "direction": "in",
  "eventHubName": "MyEventHub",
  "connection": "myEventHubReadConnectionAppSetting"
}

1. x verzióVersion 1.x

{
  "type": "eventHubTrigger",
  "name": "myEventHubMessage",
  "direction": "in",
  "path": "MyEventHub",
  "connection": "myEventHubReadConnectionAppSetting"
}

Íme a C#-szkriptkódot:Here's the C# script code:

using System;

public static void Run(string myEventHubMessage, TraceWriter log)
{
    log.Info($"C# function triggered to process a message: {myEventHubMessage}");
}

Ahhoz, hogy hozzáférést kapjon az esemény metaadataihoz a Function Code-ban, kötést kell kötnie egy Microsoft.Azure.EventHubs EventData -objektumhoz (a használatához a using utasítás szükséges).To get access to event metadata in function code, bind to an EventData object (requires a using statement for Microsoft.Azure.EventHubs). Ugyanezeket a tulajdonságokat a metódus aláírása kötési kifejezések használatával is elérheti.You can also access the same properties by using binding expressions in the method signature. Az alábbi példa mindkét módszert mutatja be, hogy ugyanazokat az eszközöket kapja:The following example shows both ways to get the same data:

#r "Microsoft.Azure.EventHubs"

using System.Text;
using System;
using Microsoft.ServiceBus.Messaging;
using Microsoft.Azure.EventHubs;

public static void Run(EventData myEventHubMessage,
    DateTime enqueuedTimeUtc,
    Int64 sequenceNumber,
    string offset,
    TraceWriter log)
{
    log.Info($"Event: {Encoding.UTF8.GetString(myEventHubMessage.Body)}");
    log.Info($"EnqueuedTimeUtc={myEventHubMessage.SystemProperties.EnqueuedTimeUtc}");
    log.Info($"SequenceNumber={myEventHubMessage.SystemProperties.SequenceNumber}");
    log.Info($"Offset={myEventHubMessage.SystemProperties.Offset}");

    // Metadata accessed by using binding expressions
    log.Info($"EnqueuedTimeUtc={enqueuedTimeUtc}");
    log.Info($"SequenceNumber={sequenceNumber}");
    log.Info($"Offset={offset}");
}

Ha egy kötegben szeretne eseményeket fogadni, string hozzon vagy EventData egy tömböt:To receive events in a batch, make string or EventData an array:

public static void Run(string[] eventHubMessages, TraceWriter log)
{
    foreach (var message in eventHubMessages)
    {
        log.Info($"C# function triggered to process a message: {message}");
    }
}

Eseményindító - F# példaTrigger - F# example

Az alábbi példa egy Event hub eseményindító-kötést mutat be egy function. JSON fájlban F# , valamint egy olyan függvényt, amely a kötést használja.The following example shows an event hub trigger binding in a function.json file and an F# function that uses the binding. A függvény naplózza az Event hub eseményindítójának üzenet törzsét.The function logs the message body of the event hub trigger.

Az alábbi példák a function. JSON fájlban Event Hubs kötési adataikat mutatják be.The following examples show Event Hubs binding data in the function.json file.

2-es verzió. xVersion 2.x

{
  "type": "eventHubTrigger",
  "name": "myEventHubMessage",
  "direction": "in",
  "eventHubName": "MyEventHub",
  "connection": "myEventHubReadConnectionAppSetting"
}

1. x verzióVersion 1.x

{
  "type": "eventHubTrigger",
  "name": "myEventHubMessage",
  "direction": "in",
  "path": "MyEventHub",
  "connection": "myEventHubReadConnectionAppSetting"
}

Íme a F# kódot:Here's the F# code:

let Run(myEventHubMessage: string, log: TraceWriter) =
    log.Log(sprintf "F# eventhub trigger function processed work item: %s" myEventHubMessage)

Eseményindító - JavaScript-példaTrigger - JavaScript example

Az alábbi példa egy Event hub eseményindító-kötést mutat be egy function. JSON fájlban, valamint egy JavaScript -függvényt, amely a kötést használja.The following example shows an event hub trigger binding in a function.json file and a JavaScript function that uses the binding. A függvény beolvassa az esemény metaadatait , és naplózza az üzenetet.The function reads event metadata and logs the message.

Az alábbi példák a function. JSON fájlban Event Hubs kötési adataikat mutatják be.The following examples show Event Hubs binding data in the function.json file.

2-es verzió. xVersion 2.x

{
  "type": "eventHubTrigger",
  "name": "myEventHubMessage",
  "direction": "in",
  "eventHubName": "MyEventHub",
  "connection": "myEventHubReadConnectionAppSetting"
}

1. x verzióVersion 1.x

{
  "type": "eventHubTrigger",
  "name": "myEventHubMessage",
  "direction": "in",
  "path": "MyEventHub",
  "connection": "myEventHubReadConnectionAppSetting"
}

A következő JavaScript-kódot:Here's the JavaScript code:

module.exports = function (context, myEventHubMessage) {
    context.log('Function triggered to process a message: ', myEventHubMessage);
    context.log('EnqueuedTimeUtc =', context.bindingData.enqueuedTimeUtc);
    context.log('SequenceNumber =', context.bindingData.sequenceNumber);
    context.log('Offset =', context.bindingData.offset);

    context.done();
};

Ha egy kötegben szeretne eseményeket fogadni, cardinality állítsa many a függvény. JSON fájlba az alábbi példákban látható módon.To receive events in a batch, set cardinality to many in the function.json file, as shown in the following examples.

2-es verzió. xVersion 2.x

{
  "type": "eventHubTrigger",
  "name": "eventHubMessages",
  "direction": "in",
  "eventHubName": "MyEventHub",
  "cardinality": "many",
  "connection": "myEventHubReadConnectionAppSetting"
}

1. x verzióVersion 1.x

{
  "type": "eventHubTrigger",
  "name": "eventHubMessages",
  "direction": "in",
  "path": "MyEventHub",
  "cardinality": "many",
  "connection": "myEventHubReadConnectionAppSetting"
}

A következő JavaScript-kódot:Here's the JavaScript code:

module.exports = function (context, eventHubMessages) {
    context.log(`JavaScript eventhub trigger function called for message array ${eventHubMessages}`);

    eventHubMessages.forEach((message, index) => {
        context.log(`Processed message ${message}`);
        context.log(`EnqueuedTimeUtc = ${context.bindingData.enqueuedTimeUtcArray[index]}`);
        context.log(`SequenceNumber = ${context.bindingData.sequenceNumberArray[index]}`);
        context.log(`Offset = ${context.bindingData.offsetArray[index]}`);
    });

    context.done();
};

Trigger – Python-példaTrigger - Python example

Az alábbi példa egy Event hub eseményindító-kötést mutat be egy function. JSON fájlban, valamint egy olyan Python -függvényt, amely a kötést használja.The following example shows an event hub trigger binding in a function.json file and a Python function that uses the binding. A függvény beolvassa az esemény metaadatait , és naplózza az üzenetet.The function reads event metadata and logs the message.

Az alábbi példák a function. JSON fájlban Event Hubs kötési adataikat mutatják be.The following examples show Event Hubs binding data in the function.json file.

{
  "type": "eventHubTrigger",
  "name": "event",
  "direction": "in",
  "eventHubName": "MyEventHub",
  "connection": "myEventHubReadConnectionAppSetting"
}

Itt látható a Python-kód:Here's the Python code:

import logging
import azure.functions as func


def main(event: func.EventHubEvent):
    logging.info('Function triggered to process a message: ', event.get_body())
    logging.info('  EnqueuedTimeUtc =', event.enqueued_time)
    logging.info('  SequenceNumber =', event.sequence_number)
    logging.info('  Offset =', event.offset)

Eseményindító - Java-példábanTrigger - Java example

Az alábbi példa egy Event hub eseményindító-kötést mutat be egy function. JSON fájlban és egy olyan Java -függvényben, amely a kötést használja.The following example shows an Event Hub trigger binding in a function.json file and an Java function that uses the binding. A függvény naplózza az Event hub eseményindítójának üzenet törzsét.The function logs the message body of the Event Hub trigger.

{
  "type": "eventHubTrigger",
  "name": "msg",
  "direction": "in",
  "eventHubName": "myeventhubname",
  "connection": "myEventHubReadConnectionAppSetting"
}
@FunctionName("ehprocessor")
public void eventHubProcessor(
  @EventHubTrigger(name = "msg",
                  eventHubName = "myeventhubname",
                  connection = "myconnvarname") String message,
       final ExecutionContext context )
       {
          context.getLogger().info(message);
 }

A Java functions runtime library-ben használja EventHubTrigger a jegyzeteket azon paramétereknél, amelyek értéke az Event hubből származik.In the Java functions runtime library, use the EventHubTrigger annotation on parameters whose value would come from Event Hub. Az ezekkel a megjegyzésekkel rendelkező paraméterek a függvény futását okozzák, amikor egy esemény érkezik.Parameters with these annotations cause the function to run when an event arrives. Ezt a jegyzetet natív Java-típusokkal, szerializálói vagy NULL értékű értékekkel lehet használni opcionális<T > használatával.This annotation can be used with native Java types, POJOs, or nullable values using Optional<T>.

Eseményindító - attribútumokTrigger - attributes

Az C# osztályok könyvtáraibanhasználja a EventHubTriggerAttribute attribútumot.In C# class libraries, use the EventHubTriggerAttribute attribute.

Az attribútum konstruktora az Event hub nevét, a fogyasztói csoport nevét és a kapcsolati karakterláncot tartalmazó Alkalmazásbeállítás nevét tartalmazza.The attribute's constructor takes the name of the event hub, the name of the consumer group, and the name of an app setting that contains the connection string. További információ ezekről a beállításokról: trigger konfiguráció szakasz.For more information about these settings, see the trigger configuration section. Példa egy EventHubTriggerAttribute attribútumra:Here's an EventHubTriggerAttribute attribute example:

[FunctionName("EventHubTriggerCSharp")]
public static void Run([EventHubTrigger("samples-workitems", Connection = "EventHubConnectionAppSetting")] string myEventHubMessage, ILogger log)
{
    ...
}

Egy teljes példa: eseményindító – C#-példa.For a complete example, see Trigger - C# example.

Eseményindító - konfigurációTrigger - configuration

A következő táblázat ismerteti a megadott kötés konfigurációs tulajdonságaiban a function.json fájlt, és a EventHubTrigger attribútum.The following table explains the binding configuration properties that you set in the function.json file and the EventHubTrigger attribute.

Function.JSON tulajdonságfunction.json property Attribútum tulajdonságaAttribute property LeírásDescription
typetype n/an/a Meg kell eventHubTrigger.Must be set to eventHubTrigger. Ez a tulajdonság beállítása automatikusan történik, ha az eseményindítót fog létrehozni az Azure Portalon.This property is set automatically when you create the trigger in the Azure portal.
directiondirection n/an/a Meg kell in.Must be set to in. Ez a tulajdonság beállítása automatikusan történik, ha az eseményindítót fog létrehozni az Azure Portalon.This property is set automatically when you create the trigger in the Azure portal.
namename n/an/a Annak a változónak a neve, amely a függvény kódjában szereplő Event tételt jelöli.The name of the variable that represents the event item in function code.
pathpath EventHubNameEventHubName Csak 1. x függvények.Functions 1.x only. Az Event hub neve.The name of the event hub. Ha az Event hub neve szerepel a kapcsolati sztringben is, ez az érték felülbírálja ezt a tulajdonságot futásidőben.When the event hub name is also present in the connection string, that value overrides this property at runtime.
eventHubNameeventHubName EventHubNameEventHubName Csak 2. x funkció.Functions 2.x only. Az Event hub neve.The name of the event hub. Ha az Event hub neve szerepel a kapcsolati sztringben is, ez az érték felülbírálja ezt a tulajdonságot futásidőben.When the event hub name is also present in the connection string, that value overrides this property at runtime.
consumerGroupconsumerGroup ConsumerGroupConsumerGroup Egy opcionális tulajdonság, amely a központban lévő eseményekre való előfizetéshez használt fogyasztói csoportot állítja be.An optional property that sets the consumer group used to subscribe to events in the hub. Ha nincs megadva, a $Default rendszer a fogyasztói csoportot használja.If omitted, the $Default consumer group is used.
számosságcardinality n/an/a A Javascripthez.For Javascript. A kötegelt feldolgozás engedélyezéséhez állítsa a következőre:.manySet to many in order to enable batching. Ha nincs megadva, vagy a oneértékre van állítva, a rendszer egyetlen üzenetet kapott a függvénynek.If omitted or set to one, single message passed to function.
kapcsolatconnection kapcsolatConnection Az Event hub névteréhez tartozó kapcsolati sztringet tartalmazó Alkalmazásbeállítás neve.The name of an app setting that contains the connection string to the event hub's namespace. Másolja ezt a kapcsolati karakterláncot a névtér kapcsolati adatok gombjára kattintva, nem az Event hub-t.Copy this connection string by clicking the Connection Information button for the namespace, not the event hub itself. A kapcsolódási karakterláncnak legalább olvasási engedéllyel kell rendelkeznie az trigger aktiválásához.This connection string must have at least read permissions to activate the trigger.
pathpath EventHubNameEventHubName Az Event hub neve.The name of the event hub. Az alkalmazás beállításain keresztül lehet hivatkozni%eventHubName%Can be referenced via app settings %eventHubName%

Ha helyileg fejleszt, Alkalmazásbeállítások lépnek a local.settings.json fájljában.When you're developing locally, app settings go into the local.settings.json file.

Eseményindító – esemény metaadatainakTrigger - event metadata

A Event Hubs trigger számos metaadat-tulajdonságot biztosít.The Event Hubs trigger provides several metadata properties. Ezek a tulajdonságok a kötési kifejezésekben való használata más kötések részeként vagy a kód paramétereiben használható.These properties can be used as part of binding expressions in other bindings or as parameters in your code. Ezek a EventData osztály tulajdonságai.These are properties of the EventData class.

TulajdonságProperty TípusType LeírásDescription
PartitionContext PartitionContextPartitionContext A PartitionContext példány.The PartitionContext instance.
EnqueuedTimeUtc DateTime A várólistán lévő időpontja (UTC).The enqueued time in UTC.
Offset string Az adateltolás az Event hub-partíciós adatfolyamhoz viszonyítva.The offset of the data relative to the Event Hub partition stream. Az eltolás a Event Hubs streamen belüli esemény jelölője vagy azonosítója.The offset is a marker or identifier for an event within the Event Hubs stream. Az azonosító egyedi az Event Hubs stream egy partícióján belül.The identifier is unique within a partition of the Event Hubs stream.
PartitionKey string Az a partíció, amelybe az eseményt el kell juttatni.The partition to which event data should be sent.
Properties IDictionary<String,Object> Az eseményhez tartozó adatértékek felhasználói tulajdonságaiThe user properties of the event data.
SequenceNumber Int64 Az esemény logikai sorszáma.The logical sequence number of the event.
SystemProperties IDictionary<String,Object> A Rendszertulajdonságok, beleértve az eseményre vonatkozó adattípusokat is.The system properties, including the event data.

Lásd: kódpéldák , használja ezeket a tulajdonságokat a cikk korábbi részében.See code examples that use these properties earlier in this article.

Eseményindító - host.json tulajdonságaiTrigger - host.json properties

A Host. JSON fájl olyan beállításokat tartalmaz, amelyek a Event Hubs trigger viselkedését vezérlik.The host.json file contains settings that control Event Hubs trigger behavior.

{
    "eventHub": {
      "maxBatchSize": 64,
      "prefetchCount": 256,
      "batchCheckpointFrequency": 1
    }
}
TulajdonságProperty AlapértelmezettDefault LeírásDescription
maxBatchSizemaxBatchSize 6464 A ciklust a fogadás egy fogadott események maximális száma.The maximum event count received per receive loop.
prefetchCountprefetchCount n/an/a Az alapértelmezett PrefetchCount, amely az alapul szolgáló EventProcessorHost használni fog.The default PrefetchCount that will be used by the underlying EventProcessorHost.
batchCheckpointFrequencybatchCheckpointFrequency 11 Az EventHub kurzor ellenőrzőpont létrehozása előtt feldolgozható kötegek esemény száma.The number of event batches to process before creating an EventHub cursor checkpoint.

OutputOutput

Az események egy esemény-adatfolyamba való írásához használja a Event Hubs kimeneti kötést.Use the Event Hubs output binding to write events to an event stream. Az Event hub-nak Küldés engedéllyel kell rendelkeznie az események írásához.You must have send permission to an event hub to write events to it.

Győződjön meg arról, hogy a szükséges csomagokra vonatkozó hivatkozások vannak érvényben: Functions 1. x vagy functions 2. xEnsure the required package references are in place: Functions 1.x or Functions 2.x

Kimenete – példaOutput - example

Tekintse meg az adott nyelvű példa:See the language-specific example:

Kimenet – C#-példaOutput - C# example

Az alábbi példa egy olyan C# függvényt mutat be, amely üzenetet ír egy Event hub-ba, a metódus visszatérési értékeként a kimenetként:The following example shows a C# function that writes a message to an event hub, using the method return value as the output:

[FunctionName("EventHubOutput")]
[return: EventHub("outputEventHubMessage", Connection = "EventHubConnectionAppSetting")]
public static string Run([TimerTrigger("0 */5 * * * *")] TimerInfo myTimer, ILogger log)
{
    log.LogInformation($"C# Timer trigger function executed at: {DateTime.Now}");
    return $"{DateTime.Now}";
}

Az alábbi minta azt mutatja be, hogyan IAsyncCollector használható az interfész egy köteg üzenetek küldésére.The following sample shows how to use the IAsyncCollector interface to send a batch of messages. Ez a forgatókönyv gyakori, ha egy adott esemény központból érkező üzeneteket dolgoz fel, és az eredményt egy másik Event hub számára küldi el.This scenario is common when you are processing messages coming from one Event Hub and sending the result to another Event Hub.

[FunctionName("EH2EH")]
public static async Task Run(
    [EventHubTrigger("source", Connection = "EventHubConnectionAppSetting")] EventData[] events,
    [EventHub("dest", Connection = "EventHubConnectionAppSetting")]IAsyncCollector<string> outputEvents,
    ILogger log)
{
    foreach (EventData eventData in events)
    {
        // do some processing:
        var myProcessedEvent = DoSomething(eventData);

        // then send the message
        await outputEvents.AddAsync(JsonConvert.SerializeObject(myProcessedEvent));
    }
}

Kimenet – C#-szkript példaOutput - C# script example

Az alábbi példa egy Event hub eseményindító-kötést mutat be egy function. JSON fájlban, valamint egy olyan C# parancsfájl -függvényt, amely a kötést használja.The following example shows an event hub trigger binding in a function.json file and a C# script function that uses the binding. A függvény egy üzenetet ír az Event hub-ba.The function writes a message to an event hub.

Az alábbi példák a function. JSON fájlban Event Hubs kötési adataikat mutatják be.The following examples show Event Hubs binding data in the function.json file. Az első példa a 2. x függvényre, a második pedig az 1. x függvényre mutat.The first example is for Functions 2.x, and the second one is for Functions 1.x.

{
    "type": "eventHub",
    "name": "outputEventHubMessage",
    "eventHubName": "myeventhub",
    "connection": "MyEventHubSendAppSetting",
    "direction": "out"
}
{
    "type": "eventHub",
    "name": "outputEventHubMessage",
    "path": "myeventhub",
    "connection": "MyEventHubSendAppSetting",
    "direction": "out"
}

Az alábbi C# szkript kód egy üzenetet hoz létre:Here's C# script code that creates one message:

using System;
using Microsoft.Extensions.Logging;

public static void Run(TimerInfo myTimer, out string outputEventHubMessage, ILogger log)
{
    String msg = $"TimerTriggerCSharp1 executed at: {DateTime.Now}";
    log.LogInformation(msg);   
    outputEventHubMessage = msg;
}

Az alábbiakban C#-szkriptkódot, amely több üzenetet hoz létre:Here's C# script code that creates multiple messages:

public static void Run(TimerInfo myTimer, ICollector<string> outputEventHubMessage, ILogger log)
{
    string message = $"Message created at: {DateTime.Now}";
    log.LogInformation(message);
    outputEventHubMessage.Add("1 " + message);
    outputEventHubMessage.Add("2 " + message);
}

Kimenete – F# példaOutput - F# example

Az alábbi példa egy Event hub eseményindító-kötést mutat be egy function. JSON fájlban F# , valamint egy olyan függvényt, amely a kötést használja.The following example shows an event hub trigger binding in a function.json file and an F# function that uses the binding. A függvény egy üzenetet ír az Event hub-ba.The function writes a message to an event hub.

Az alábbi példák a function. JSON fájlban Event Hubs kötési adataikat mutatják be.The following examples show Event Hubs binding data in the function.json file. Az első példa a 2. x függvényre, a második pedig az 1. x függvényre mutat.The first example is for Functions 2.x, and the second one is for Functions 1.x.

{
    "type": "eventHub",
    "name": "outputEventHubMessage",
    "eventHubName": "myeventhub",
    "connection": "MyEventHubSendAppSetting",
    "direction": "out"
}
{
    "type": "eventHub",
    "name": "outputEventHubMessage",
    "path": "myeventhub",
    "connection": "MyEventHubSendAppSetting",
    "direction": "out"
}

Íme a F# kódot:Here's the F# code:

let Run(myTimer: TimerInfo, outputEventHubMessage: byref<string>, log: ILogger) =
    let msg = sprintf "TimerTriggerFSharp1 executed at: %s" DateTime.Now.ToString()
    log.LogInformation(msg);
    outputEventHubMessage <- msg;

Kimenet – JavaScript-példaOutput - JavaScript example

Az alábbi példa egy Event hub eseményindító-kötést mutat be egy function. JSON fájlban, valamint egy JavaScript -függvényt, amely a kötést használja.The following example shows an event hub trigger binding in a function.json file and a JavaScript function that uses the binding. A függvény egy üzenetet ír az Event hub-ba.The function writes a message to an event hub.

Az alábbi példák a function. JSON fájlban Event Hubs kötési adataikat mutatják be.The following examples show Event Hubs binding data in the function.json file. Az első példa a 2. x függvényre, a második pedig az 1. x függvényre mutat.The first example is for Functions 2.x, and the second one is for Functions 1.x.

{
    "type": "eventHub",
    "name": "outputEventHubMessage",
    "eventHubName": "myeventhub",
    "connection": "MyEventHubSendAppSetting",
    "direction": "out"
}
{
    "type": "eventHub",
    "name": "outputEventHubMessage",
    "path": "myeventhub",
    "connection": "MyEventHubSendAppSetting",
    "direction": "out"
}

Az alábbi JavaScript-kód egyetlen üzenetet küld:Here's JavaScript code that sends a single message:

module.exports = function (context, myTimer) {
    var timeStamp = new Date().toISOString();
    context.log('Message created at: ', timeStamp);   
    context.bindings.outputEventHubMessage = "Message created at: " + timeStamp;
    context.done();
};

Az alábbi JavaScript-kód több üzenetet küld:Here's JavaScript code that sends multiple messages:

module.exports = function(context) {
    var timeStamp = new Date().toISOString();
    var message = 'Message created at: ' + timeStamp;

    context.bindings.outputEventHubMessage = [];

    context.bindings.outputEventHubMessage.push("1 " + message);
    context.bindings.outputEventHubMessage.push("2 " + message);
    context.done();
};

Kimenet – Python-példaOutput - Python example

Az alábbi példa egy Event hub eseményindító-kötést mutat be egy function. JSON fájlban, valamint egy olyan Python -függvényt, amely a kötést használja.The following example shows an event hub trigger binding in a function.json file and a Python function that uses the binding. A függvény egy üzenetet ír az Event hub-ba.The function writes a message to an event hub.

Az alábbi példák a function. JSON fájlban Event Hubs kötési adataikat mutatják be.The following examples show Event Hubs binding data in the function.json file.

{
    "type": "eventHub",
    "name": "$return",
    "eventHubName": "myeventhub",
    "connection": "MyEventHubSendAppSetting",
    "direction": "out"
}

A következő Python-kód egyetlen üzenetet küld:Here's Python code that sends a single message:

import datetime
import logging
import azure.functions as func


def main(timer: func.TimerRequest) -> str:
    timestamp = datetime.datetime.utcnow()
    logging.info('Message created at: %s', timestamp)
    return 'Message created at: {}'.format(timestamp)

Kimenet – Java-példábanOutput - Java example

Az alábbi példa egy Java-függvényt mutat be, amely az aktuális időponthoz tartozó üzenetet ír egy Event hub-ba.The following example shows a Java function that writes a message contianing the current time to an Event Hub.

@}FunctionName("sendTime")
@EventHubOutput(name = "event", eventHubName = "samples-workitems", connection = "AzureEventHubConnection")
public String sendTime(
   @TimerTrigger(name = "sendTimeTrigger", schedule = "0 *&#47;5 * * * *") String timerInfo)  {
     return LocalDateTime.now().toString();
 }

A Java functions runtime library-ben használja @EventHubOutput a Megjegyzés azon paramétereket, amelyek értékét közzé szeretné tenni az Event hub-ban.In the Java functions runtime library, use the @EventHubOutput annotation on parameters whose value would be published to Event Hub. A paraméternek olyan típusúnak OutputBinding<T> kell lennie, ahol a T egy POJO vagy bármely natív Java-típus.The parameter should be of type OutputBinding<T> , where T is a POJO or any native Java type.

Kimenet – attribútumokOutput - attributes

Az EventHubAttribute attribútumot használja az C# osztályok könyvtáraihoz.For C# class libraries, use the EventHubAttribute attribute.

Az attribútum konstruktora az Event hub nevét, valamint egy, a kapcsolati karakterláncot tartalmazó Alkalmazásbeállítás nevét veszi át.The attribute's constructor takes the name of the event hub and the name of an app setting that contains the connection string. További információ ezekről a beállításokról: kimeneti konfiguráció.For more information about these settings, see Output - configuration. Példa egy EventHub attribútumra:Here's an EventHub attribute example:

[FunctionName("EventHubOutput")]
[return: EventHub("outputEventHubMessage", Connection = "EventHubConnectionAppSetting")]
public static string Run([TimerTrigger("0 */5 * * * *")] TimerInfo myTimer, ILogger log)
{
    ...
}

Egy teljes példa: kimenet – C#-példa.For a complete example, see Output - C# example.

Kimenete – konfigurációOutput - configuration

A következő táblázat ismerteti a megadott kötés konfigurációs tulajdonságaiban a function.json fájlt, és a EventHub attribútum.The following table explains the binding configuration properties that you set in the function.json file and the EventHub attribute.

Function.JSON tulajdonságfunction.json property Attribútum tulajdonságaAttribute property LeírásDescription
typetype n/an/a "EventHub" értékre kell állítani.Must be set to "eventHub".
directiondirection n/an/a Állítsa "out".Must be set to "out". Ez a paraméter automatikusan be van állítva, amikor létrehozza a kötést a Azure Portalban.This parameter is set automatically when you create the binding in the Azure portal.
namename n/an/a Az eseményt jelölő függvény kódjában használt változó neve.The variable name used in function code that represents the event.
pathpath EventHubNameEventHubName Csak 1. x függvények.Functions 1.x only. Az Event hub neve.The name of the event hub. Ha az Event hub neve szerepel a kapcsolati sztringben is, ez az érték felülbírálja ezt a tulajdonságot futásidőben.When the event hub name is also present in the connection string, that value overrides this property at runtime.
eventHubNameeventHubName EventHubNameEventHubName Csak 2. x funkció.Functions 2.x only. Az Event hub neve.The name of the event hub. Ha az Event hub neve szerepel a kapcsolati sztringben is, ez az érték felülbírálja ezt a tulajdonságot futásidőben.When the event hub name is also present in the connection string, that value overrides this property at runtime.
kapcsolatconnection kapcsolatConnection Az Event hub névteréhez tartozó kapcsolati sztringet tartalmazó Alkalmazásbeállítás neve.The name of an app setting that contains the connection string to the event hub's namespace. Másolja ezt a kapcsolati karakterláncot a névtér kapcsolati adatok gombjára kattintva, nem az Event hub-t.Copy this connection string by clicking the Connection Information button for the namespace, not the event hub itself. Ez a kapcsolati karakterláncnak küldési engedéllyel kell rendelkeznie az üzenet küldéséhez az esemény-adatfolyamba.This connection string must have send permissions to send the message to the event stream.

Ha helyileg fejleszt, Alkalmazásbeállítások lépnek a local.settings.json fájljában.When you're developing locally, app settings go into the local.settings.json file.

Kimenet – használatOutput - usage

A C# és C# a szkriptben a (z out string paramName) metódus-paraméter (például) használatával küldhet üzeneteket.In C# and C# script, send messages by using a method parameter such as out string paramName. A C# szkriptben paramName a függvény. JSON name tulajdonságában megadott érték.In C# script, paramName is the value specified in the name property of function.json. Több üzenet ICollector<string> írásához használhatja a vagy IAsyncCollector<string> a helyét out string.To write multiple messages, you can use ICollector<string> or IAsyncCollector<string> in place of out string.

A JavaScriptben a használatával context.bindings.<name>érheti el a kimeneti eseményt.In JavaScript, access the output event by using context.bindings.<name>. <name>a name függvény. JSONtulajdonságában megadott érték.<name> is the value specified in the name property of function.json.

Kivételek és a visszatérési kódokExceptions and return codes

KötésBinding HivatkozásReference
EseményközpontEvent Hub Üzemeltetési útmutatóOperations Guide

Host.JSON-beállításokhost.json settings

Ez a szakasz ismerteti a globális konfigurációs beállításoknak a kötéshez verziójában elérhető 2.x.This section describes the global configuration settings available for this binding in version 2.x. Az alábbi példa host.json-fájl csak a verzió 2.x beállításait tartalmazza ezt a kötést.The example host.json file below contains only the version 2.x settings for this binding. További információ a globális konfigurációs beállításoknak verzióban 2.x verzióját, lásd: verzióját az Azure Functions – host.json referencia 2.x.For more information about global configuration settings in version 2.x, see host.json reference for Azure Functions version 2.x.

Megjegyzés

Az a funkciók host.json odkaz 1.x, lásd: Azure Functions – host.json referencia 1.x.For a reference of host.json in Functions 1.x, see host.json reference for Azure Functions 1.x.

{
    "version": "2.0",
    "extensions": {
        "eventHubs": {
            "batchCheckpointFrequency": 5,
            "eventProcessorOptions": {
                "maxBatchSize": 256,
                "prefetchCount": 512
            }
        }
    }
}  
TulajdonságProperty AlapértelmezettDefault LeírásDescription
maxBatchSizemaxBatchSize 6464 A fogadott események száma fogadási hurokban.The maximum event count received per receive loop.
prefetchCountprefetchCount n/an/a Az alapul szolgáló EventProcessorHost által használt alapértelmezett PrefetchCount.The default PrefetchCount that will be used by the underlying EventProcessorHost.
batchCheckpointFrequencybatchCheckpointFrequency 11 Az EventHub kurzor ellenőrzőpontjának létrehozása előtt feldolgozandó eseményvezérelt kötegek száma.The number of event batches to process before creating an EventHub cursor checkpoint.

További lépésekNext steps