Enlace de salida de Azure Event Hubs para Azure FunctionsAzure Event Hubs output binding for Azure Functions

En este artículo se explica cómo usar enlaces de Azure Event Hubs para Azure Functions.This article explains how to work with Azure Event Hubs bindings for Azure Functions. Azure Functions admite enlaces de desencadenador y salida para Event Hubs.Azure Functions supports trigger and output bindings for Event Hubs.

Para obtener información sobre los detalles de instalación y configuración, vea la información general.For information on setup and configuration details, see the overview.

Use el enlace de salida de Event Hubs para escribir eventos en una secuencia.Use the Event Hubs output binding to write events to an event stream. Debe tener permiso de envío a un centro de eventos para escribir eventos en él.You must have send permission to an event hub to write events to it.

Asegúrese de que las referencias de paquete necesarias están implementadas antes de tratar de implementar un enlace de salida.Make sure the required package references are in place before you try to implement an output binding.

En el ejemplo siguiente se muestra una función de C# que escribe un mensaje en un centro de eventos usando el valor devuelto del método como resultado: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}";
}

En el siguiente ejemplo se muestra cómo usar la interfaz IAsyncCollector para enviar un lote de mensajes.The following example shows how to use the IAsyncCollector interface to send a batch of messages. Este escenario es habitual cuando se procesan mensajes procedentes de un centro de eventos y el resultado se envía a otro centro de eventos.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));
    }
}

Atributos y anotacionesAttributes and annotations

En las bibliotecas de clases de C#, use el atributo EventHubAttribute.For C# class libraries, use the EventHubAttribute attribute.

El constructor del atributo toma el nombre del centro de eventos y el nombre de una configuración de aplicación que contenga la cadena de conexión.The attribute's constructor takes the name of the event hub and the name of an app setting that contains the connection string. Para obtener más información sobre estas configuraciones, vea Salida: configuración.For more information about these settings, see Output - configuration. Este es un ejemplo de atributo EventHub:Here's an EventHub attribute example:

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

Para obtener un ejemplo completo, consulte Salida: ejemplo de C#.For a complete example, see Output - C# example.

ConfiguraciónConfiguration

En la siguiente tabla se explican las propiedades de configuración de enlace que se definen en el archivo function.json y el atributo EventHub.The following table explains the binding configuration properties that you set in the function.json file and the EventHub attribute.

Propiedad de function.jsonfunction.json property Propiedad de atributoAttribute property DescripciónDescription
typetype N/Dn/a Debe establecerse en "eventHub".Must be set to "eventHub".
directiondirection N/Dn/a Debe establecerse en "out".Must be set to "out". Este parámetro se establece automáticamente cuando se crea el enlace en Azure Portal.This parameter is set automatically when you create the binding in the Azure portal.
namename N/Dn/a Nombre de la variable que se usa en el código de la función que representa el evento.The variable name used in function code that represents the event.
pathpath EventHubNameEventHubName Solo Functions 1.x.Functions 1.x only. El nombre del centro de eventos.The name of the event hub. Cuando el nombre del centro de eventos también está presente en la cadena de conexión, ese valor reemplaza esta propiedad en tiempo de ejecución.When the event hub name is also present in the connection string, that value overrides this property at runtime.
eventHubNameeventHubName EventHubNameEventHubName Functions 2.x y versiones posteriores.Functions 2.x and higher. El nombre del centro de eventos.The name of the event hub. Cuando el nombre del centro de eventos también está presente en la cadena de conexión, ese valor reemplaza esta propiedad en tiempo de ejecución.When the event hub name is also present in the connection string, that value overrides this property at runtime.
connectionconnection ConnectionConnection El nombre de una configuración de aplicación que contenga la cadena de conexión para el espacio de nombres del centro de eventos.The name of an app setting that contains the connection string to the event hub's namespace. Copie esta cadena de conexión haciendo clic en el botón Información de conexión del espacio de nombres, no del propio centro de eventos.Copy this connection string by clicking the Connection Information button for the namespace, not the event hub itself. Esta cadena de conexión debe tener permisos de envío para enviar el mensaje a la secuencia de eventos.This connection string must have send permissions to send the message to the event stream.

Cuando desarrolla localmente, la configuración de aplicación pasa al archivo local.settings.json.When you're developing locally, app settings go into the local.settings.json file.

UsoUsage

Envíe mensajes mediante un parámetro de método, como out string paramName.Send messages by using a method parameter such as out string paramName. En script de C#, paramName es el valor especificado en la propiedad name de function.json.In C# script, paramName is the value specified in the name property of function.json. Para escribir varios mensajes, puede usar ICollector<string> o IAsyncCollector<string> en lugar de out string.To write multiple messages, you can use ICollector<string> or IAsyncCollector<string> in place of out string.

Excepciones y códigos de retornoExceptions and return codes

EnlaceBinding ReferenciaReference
Centro de eventosEvent Hub Guía de operacionesOperations Guide

Pasos siguientesNext steps