EventHubBufferedProducerClient Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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
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 |
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 Cuando se devuelve esta llamada, |
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 Cuando se devuelve esta llamada, |
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 Cuando se devuelve esta llamada, |
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 Cuando se devuelve esta llamada, |
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
Azure SDK for .NET