Compartir a través de


EventHubBufferedProducerClient Clase

Definición

Un cliente responsable de publicar instancias de EventData en un centro de eventos específico. Dependiendo de las opciones especificadas cuando se pone en cola los eventos, se pueden asignar automáticamente a una partición, agruparse según la clave de partición especificada o asignar una partición solicitada específicamente.

EventHubBufferedProducerClient no se publica inmediatamente, sino que usa un modelo diferido en el que los eventos se recopilan en un búfer para que se puedan procesar por lotes y publicarse de forma eficaz cuando el lote esté lleno o MaximumWaitTime haya transcurrido sin nuevos eventos en cola.

Este modelo está pensado para desplazar la carga de la administración por lotes de los autores de llamadas, a costa del tiempo no determinista, para cuándo se publicarán los eventos. Hay ventajas adicionales que se deben tener en cuenta, así como:

  • Si la aplicación se bloquea, los eventos del búfer no se habrán publicado. Para evitar la pérdida de datos, se recomienda a los autores de llamadas realizar un seguimiento del progreso de la publicación mediante los SendEventBatchSucceededAsync controladores y SendEventBatchFailedAsync .
  • Los eventos que especifican una clave de partición se pueden asignar a una partición diferente de las que usan la misma clave con otros productores.
  • En el improbable caso de que una partición deje de estar disponible temporalmente, EventHubBufferedProducerClient puede tardar más tiempo en recuperarse que otros productores.

En escenarios en los que es importante que los eventos se publiquen inmediatamente con un resultado determinista, asegúrese de que las claves de partición se asignan a una partición coherente con otros publicadores, o donde maximizar la disponibilidad es un requisito, se recomienda usar EventHubProducerClient .

public class EventHubBufferedProducerClient : IAsyncDisposable
type EventHubBufferedProducerClient = class
    interface IAsyncDisposable
Public Class EventHubBufferedProducerClient
Implements IAsyncDisposable
Herencia
EventHubBufferedProducerClient
Implementaciones

Comentarios

EventHubBufferedProducerClient es seguro almacenar en caché y usar como singleton durante la vigencia de una aplicación, que es el enfoque recomendado. El productor es responsable de garantizar un uso eficaz de la red, la CPU y la memoria. Llamar a o CloseAsync(Boolean, CancellationToken)DisposeAsync() cuando no haya más eventos en cola o cuando se apague la aplicación para que el búfer se pueda vaciar y los recursos se limpien correctamente.

Constructores

EventHubBufferedProducerClient()

Se usa para simular al productor con fines de prueba.

EventHubBufferedProducerClient(EventHubConnection, EventHubBufferedProducerClientOptions)

Inicializa una nueva instancia de la clase EventHubBufferedProducerClient.

EventHubBufferedProducerClient(String)

Inicializa una nueva instancia de la clase EventHubBufferedProducerClient.

EventHubBufferedProducerClient(String, EventHubBufferedProducerClientOptions)

Inicializa una nueva instancia de la clase EventHubBufferedProducerClient.

EventHubBufferedProducerClient(String, String)

Inicializa una nueva instancia de la clase EventHubBufferedProducerClient.

EventHubBufferedProducerClient(String, String, AzureNamedKeyCredential, EventHubBufferedProducerClientOptions)

Inicializa una nueva instancia de la clase EventHubBufferedProducerClient.

EventHubBufferedProducerClient(String, String, AzureSasCredential, EventHubBufferedProducerClientOptions)

Inicializa una nueva instancia de la clase EventHubBufferedProducerClient.

EventHubBufferedProducerClient(String, String, EventHubBufferedProducerClientOptions)

Inicializa una nueva instancia de la clase EventHubBufferedProducerClient.

EventHubBufferedProducerClient(String, String, TokenCredential, EventHubBufferedProducerClientOptions)

Inicializa una nueva instancia de la clase EventHubBufferedProducerClient.

Propiedades

EventHubName

Nombre del centro de eventos al que está conectado este productor, específico del espacio de nombres de Event Hubs que lo contiene.

FullyQualifiedNamespace

El espacio de nombres completo de Event Hubs al que está asociado este productor, que probablemente será similar a {yournamespace}.servicebus.windows.net.

Identifier

Nombre único para identificar al productor almacenado en búfer.

IsClosed

Indica si se ha cerrado o no.EventHubBufferedProducerClient

IsPublishing

Indica si actualmente está EventHubBufferedProducerClient activo y publica eventos en cola.

TotalBufferedEventCount

El número total de eventos que están almacenados en búfer y en espera de publicación, en todas las particiones.

Métodos

CloseAsync(Boolean, CancellationToken)

Cierra el productor y realiza las tareas necesarias para limpiar todos los recursos utilizados por .EventHubBufferedProducerClient

DisposeAsync()

Cierra el productor y realiza las tareas necesarias para limpiar todos los recursos utilizados por .EventHubBufferedProducerClient

EnqueueEventAsync(EventData, CancellationToken)

Pone en cola un EventData en el búfer que se va a publicar en el centro de eventos. Si no hay capacidad en el búfer cuando se invoca este método, esperará a que haya espacio disponible y se asegurará de que eventData se ha puesto en cola.

Cuando se devuelve esta llamada, eventData se ha aceptado en el búfer, pero es posible que aún no se haya publicado. La publicación tendrá lugar en un punto no determinista en el futuro a medida que se procesa el búfer.

EnqueueEventAsync(EventData, EnqueueEventOptions, CancellationToken)

Pone en cola un EventData en el búfer que se va a publicar en el centro de eventos. Si no hay capacidad en el búfer cuando se invoca este método, esperará a que haya espacio disponible y se asegurará de que eventData se ha puesto en cola.

Cuando se devuelve esta llamada, eventData se ha aceptado en el búfer, pero es posible que aún no se haya publicado. La publicación tendrá lugar en un punto no determinista en el futuro a medida que se procesa el búfer.

EnqueueEventsAsync(IEnumerable<EventData>, CancellationToken)

Pone en cola un conjunto de EventData en el búfer que se va a publicar en el centro de eventos. Si no hay capacidad suficiente en el búfer cuando se invoca este método, esperará a que haya espacio disponible y se asegurará de que todo events el events conjunto se haya puesto en cola.

Cuando se devuelve esta llamada, events se ha aceptado en el búfer, pero es posible que aún no se haya publicado. La publicación tendrá lugar en un punto no determinista en el futuro a medida que se procesa el búfer.

EnqueueEventsAsync(IEnumerable<EventData>, EnqueueEventOptions, CancellationToken)

Pone en cola un conjunto de EventData en el búfer que se va a publicar en el centro de eventos. Si no hay capacidad suficiente en el búfer cuando se invoca este método, esperará a que haya espacio disponible y se asegurará de que todo events el events conjunto se haya puesto en cola.

Cuando se devuelve esta llamada, events se ha aceptado en el búfer, pero es posible que aún no se haya publicado. La publicación tendrá lugar en un punto no determinista en el futuro a medida que se procesa el búfer.

FlushAsync(CancellationToken)

Intenta publicar todos los eventos en el búfer inmediatamente. Esto puede dar lugar a que se publiquen varios lotes, el resultado de cada uno de los cuales se notificará individualmente por los SendEventBatchSucceededAsync controladores y SendEventBatchFailedAsync .

Tras la finalización de este método, el búfer estará vacío.

GetBufferedEventCount(String)

Número de eventos almacenados en búfer y en espera de publicarse para una partición determinada.

GetEventHubPropertiesAsync(CancellationToken)

Recupera información sobre el centro de eventos al que está asociada la conexión, incluido el número de particiones presentes y sus identificadores.

GetPartitionIdsAsync(CancellationToken)

Recupera el conjunto de identificadores de las particiones de un centro de eventos.

GetPartitionPropertiesAsync(String, CancellationToken)

Recupera información sobre una partición específica para un centro de eventos, incluidos los elementos que describen los eventos disponibles en el flujo de eventos de partición.

ListPartitionIdsAsync(EventHubProducerClient, CancellationToken)

Consulta los identificadores de las particiones del centro de eventos.

OnSendFailedAsync(IReadOnlyList<EventData>, Exception, String, CancellationToken)

Responsable de generar el SendEventBatchFailedAsync evento tras la publicación errónea de un lote de eventos, una vez agotados todos los reintentos aptos.

OnSendSucceededAsync(IReadOnlyList<EventData>, String, CancellationToken)

Responsable de generar el SendEventBatchSucceededAsync evento tras la publicación correcta de un lote de eventos.

Eventos

SendEventBatchFailedAsync

Invocado para cualquier lote de eventos que no se pudieron publicar en el centro de eventos, este controlador debe proporcionarse antes de que se puedan poner en cola los eventos. Si este productor no se configuró con MaximumConcurrentSends y MaximumConcurrentSendsPerPartition ambos se estableció en 1, el controlador se invocará simultáneamente.

Es seguro intentar volver a enviar los eventos mediante una llamada EnqueueEventAsync(EventData, EnqueueEventOptions, CancellationToken) a o EnqueueEventsAsync(IEnumerable<EventData>, EnqueueEventOptions, CancellationToken) desde este controlador. Es importante tener en cuenta que, al hacerlo, se colocarán al final del búfer; no se mantendrá el orden original.

Este controlador se esperará después de que no se publique el lote; la operación de publicación no se considera completada hasta que se devuelva la llamada del controlador. Se recomienda que no se realicen operaciones de larga duración en el controlador para evitar que afecte negativamente al rendimiento.

No se recomienda invocar CloseAsync(Boolean, CancellationToken) o DisposeAsync() desde este controlador; si lo hace, puede dar lugar a un escenario de interbloqueo si se esperan esas llamadas.

SendEventBatchSucceededAsync

Invocado después de que cada lote de eventos se haya publicado correctamente en el centro de eventos, este controlador es opcional y está pensado para proporcionar notificaciones para los agentes de escucha interesados. Si este productor se configuró con MaximumConcurrentSends o MaximumConcurrentSendsPerPartition estableció mayor que 1, el controlador se invocará simultáneamente.

Este controlador se esperará después de publicar el lote; la operación de publicación no se considerará completada hasta que se devuelva la llamada del controlador. Se recomienda que no se realicen operaciones de larga duración en el controlador para evitar que afecte negativamente al rendimiento.

No se recomienda invocar CloseAsync(Boolean, CancellationToken) o DisposeAsync() desde este controlador; si lo hace, puede dar lugar a un escenario de interbloqueo si se esperan esas llamadas.

Se aplica a

Consulte también