Partager via


EventHubBufferedProducerClient Classe

Définition

Client responsable de la publication d’instances de EventData dans un Event Hub spécifique. Selon les options spécifiées lorsque les événements sont en file d’attente, ils peuvent être automatiquement attribués à une partition, regroupés en fonction de la clé de partition spécifiée ou affectés à une partition spécifiquement demandée.

ne EventHubBufferedProducerClient publie pas immédiatement, mais utilise un modèle différé où les événements sont collectés dans une mémoire tampon afin qu’ils puissent être efficacement traités par lots et publiés lorsque le lot est complet ou que le MaximumWaitTime est écoulé sans qu’aucun nouvel événement ne soit mis en file d’attente.

Ce modèle est destiné à déplacer la charge de la gestion par lots des appelants, au prix d’un timing non déterministe, pour le moment où les événements seront publiés. Il existe également d’autres compromis à prendre en compte :

  • Si l’application se bloque, les événements dans la mémoire tampon n’auront pas été publiés. Pour éviter la perte de données, les appelants sont encouragés à suivre la progression de la publication à l’aide des SendEventBatchSucceededAsync gestionnaires et SendEventBatchFailedAsync .
  • Les événements spécifiant une clé de partition peuvent se voir attribuer une partition différente de ceux qui utilisent la même clé avec d’autres producteurs.
  • Dans le cas peu probable où une partition devient temporairement indisponible, la EventHubBufferedProducerClient récupération peut prendre plus de temps que les autres producteurs.

Dans les scénarios où il est important d’avoir des événements publiés immédiatement avec un résultat déterministe, assurez-vous que les clés de partition sont attribuées à une partition cohérente avec d’autres éditeurs, ou lorsque l’optimisation de la disponibilité est une exigence, l’utilisation de est EventHubProducerClient recommandée.

public class EventHubBufferedProducerClient : IAsyncDisposable
type EventHubBufferedProducerClient = class
    interface IAsyncDisposable
Public Class EventHubBufferedProducerClient
Implements IAsyncDisposable
Héritage
EventHubBufferedProducerClient
Implémente

Remarques

Le EventHubBufferedProducerClient est sûr à mettre en cache et à utiliser en tant que singleton pendant la durée de vie d’une application, ce qui est l’approche recommandée. Le producteur est chargé de garantir une utilisation efficace du réseau, du processeur et de la mémoire. CloseAsync(Boolean, CancellationToken)DisposeAsync() L’appel ou quand aucun autre événement ne sera mis en file d’attente ou lorsque l’application s’arrête est nécessaire afin que la mémoire tampon puisse être vidée et les ressources nettoyées correctement.

Constructeurs

EventHubBufferedProducerClient()

Utilisé pour se moquer du producteur à des fins de test.

EventHubBufferedProducerClient(EventHubConnection, EventHubBufferedProducerClientOptions)

Initialise une nouvelle instance de la classe EventHubBufferedProducerClient.

EventHubBufferedProducerClient(String)

Initialise une nouvelle instance de la classe EventHubBufferedProducerClient.

EventHubBufferedProducerClient(String, EventHubBufferedProducerClientOptions)

Initialise une nouvelle instance de la classe EventHubBufferedProducerClient.

EventHubBufferedProducerClient(String, String)

Initialise une nouvelle instance de la classe EventHubBufferedProducerClient.

EventHubBufferedProducerClient(String, String, AzureNamedKeyCredential, EventHubBufferedProducerClientOptions)

Initialise une nouvelle instance de la classe EventHubBufferedProducerClient.

EventHubBufferedProducerClient(String, String, AzureSasCredential, EventHubBufferedProducerClientOptions)

Initialise une nouvelle instance de la classe EventHubBufferedProducerClient.

EventHubBufferedProducerClient(String, String, EventHubBufferedProducerClientOptions)

Initialise une nouvelle instance de la classe EventHubBufferedProducerClient.

EventHubBufferedProducerClient(String, String, TokenCredential, EventHubBufferedProducerClientOptions)

Initialise une nouvelle instance de la classe EventHubBufferedProducerClient.

Propriétés

EventHubName

Nom du hub d’événements auquel ce producteur est connecté, spécifique à l’espace de noms Event Hubs qui le contient.

FullyQualifiedNamespace

Espace de noms Event Hubs complet auquel ce producteur est actuellement associé, qui sera probablement similaire à {yournamespace}.servicebus.windows.net.

Identifier

Nom unique permettant d’identifier le producteur mis en mémoire tampon.

IsClosed

Indique si cette EventHubBufferedProducerClient opération a été fermée ou non.

IsPublishing

Indique s’il est actuellement actif et s’il EventHubBufferedProducerClient publie des événements en file d’attente.

TotalBufferedEventCount

Nombre total d’événements actuellement mis en mémoire tampon et en attente d’être publiés, sur toutes les partitions.

Méthodes

CloseAsync(Boolean, CancellationToken)

Ferme le producteur et effectue les tâches nécessaires pour propre toutes les ressources utilisées par .EventHubBufferedProducerClient

DisposeAsync()

Ferme le producteur et effectue les tâches nécessaires pour propre toutes les ressources utilisées par .EventHubBufferedProducerClient

EnqueueEventAsync(EventData, CancellationToken)

Met en file d’attente un EventData dans la mémoire tampon à publier dans event Hub. S’il n’y a aucune capacité dans la mémoire tampon lorsque cette méthode est appelée, elle attend que l’espace soit disponible et s’assure que le eventData a été mis en file d’attente.

Lorsque cet appel est retourné, le eventData a été accepté dans la mémoire tampon, mais il n’a peut-être pas encore été publié. La publication aura lieu à un point non déterministe à l’avenir, car la mémoire tampon sera traitée.

EnqueueEventAsync(EventData, EnqueueEventOptions, CancellationToken)

Met en file d’attente un EventData dans la mémoire tampon à publier dans event Hub. S’il n’y a aucune capacité dans la mémoire tampon lorsque cette méthode est appelée, elle attend que l’espace soit disponible et s’assure que le eventData a été mis en file d’attente.

Lorsque cet appel est retourné, le eventData a été accepté dans la mémoire tampon, mais il n’a peut-être pas encore été publié. La publication aura lieu à un point non déterministe à l’avenir, car la mémoire tampon sera traitée.

EnqueueEventsAsync(IEnumerable<EventData>, CancellationToken)

Met en file d’attente un ensemble de EventData dans la mémoire tampon à publier dans le hub d’événements. Si la capacité de la mémoire tampon est insuffisante lors de l’appel de cette méthode, elle attend que l’espace soit disponible et s’assure que tout events le events jeu a été mis en file d’attente.

Lorsque cet appel est retourné, les events ont été acceptés dans la mémoire tampon, mais il n’a peut-être pas encore été publié. La publication aura lieu à un point non déterministe à l’avenir, car la mémoire tampon sera traitée.

EnqueueEventsAsync(IEnumerable<EventData>, EnqueueEventOptions, CancellationToken)

Met en file d’attente un ensemble de EventData dans la mémoire tampon à publier dans le hub d’événements. Si la capacité de la mémoire tampon est insuffisante lors de l’appel de cette méthode, elle attend que l’espace soit disponible et s’assure que tout events le events jeu a été mis en file d’attente.

Lorsque cet appel est retourné, les events ont été acceptés dans la mémoire tampon, mais il n’a peut-être pas encore été publié. La publication aura lieu à un point non déterministe à l’avenir, car la mémoire tampon sera traitée.

FlushAsync(CancellationToken)

Tente de publier tous les événements dans la mémoire tampon immédiatement. Cela peut entraîner la publication de plusieurs lots, dont le résultat sera signalé individuellement par les SendEventBatchSucceededAsync gestionnaires et SendEventBatchFailedAsync .

Une fois cette méthode terminée, la mémoire tampon est vide.

GetBufferedEventCount(String)

Nombre d’événements mis en mémoire tampon et en attente d’être publiés pour une partition donnée.

GetEventHubPropertiesAsync(CancellationToken)

Récupère des informations sur le hub d’événements auquel la connexion est associée, notamment le nombre de partitions présentes et leurs identificateurs.

GetPartitionIdsAsync(CancellationToken)

Récupère le jeu d’identificateurs pour les partitions d’un Event Hub.

GetPartitionPropertiesAsync(String, CancellationToken)

Récupère des informations sur une partition spécifique pour un Event Hub, y compris des éléments qui décrivent les événements disponibles dans le flux d’événements de partition.

ListPartitionIdsAsync(EventHubProducerClient, CancellationToken)

Requêtes pour les identificateurs des partitions Event Hub.

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

Responsable du déclenchement de l’événement SendEventBatchFailedAsync en cas d’échec de publication d’un lot d’événements, une fois que toutes les nouvelles tentatives éligibles sont épuisées.

OnSendSucceededAsync(IReadOnlyList<EventData>, String, CancellationToken)

Responsable du déclenchement de l’événement SendEventBatchSucceededAsync en cas de publication réussie d’un lot d’événements.

Événements

SendEventBatchFailedAsync

Appelé pour tout lot d’événements qui n’ont pas pu être publiés sur event Hub, ce gestionnaire doit être fourni avant que les événements puissent être mis en file d’attente. Si ce producteur n’a pas été configuré avec MaximumConcurrentSends et MaximumConcurrentSendsPerPartition que les deux ont la valeur 1, le gestionnaire est appelé simultanément.

Il est prudent d’essayer de renvoyer les événements en appelant EnqueueEventAsync(EventData, EnqueueEventOptions, CancellationToken) ou EnqueueEventsAsync(IEnumerable<EventData>, EnqueueEventOptions, CancellationToken) à partir de ce gestionnaire. Il est important de noter que cela les placera à la fin de la mémoire tampon; la commande d’origine ne sera pas conservée.

Ce gestionnaire sera attendu après l’échec de publication du lot ; l’opération de publication n’est pas considérée comme terminée tant que l’appel du gestionnaire n’est pas retourné. Il est recommandé qu’aucune opération de longue durée ne soit effectuée dans le gestionnaire pour éviter d’avoir un impact négatif sur le débit.

Il n’est pas recommandé d’appeler CloseAsync(Boolean, CancellationToken) ou DisposeAsync() à partir de ce gestionnaire ; cela peut entraîner un scénario d’interblocage si ces appels sont attendus.

SendEventBatchSucceededAsync

Appelé après la publication de chaque lot d’événements sur Event Hub, ce gestionnaire est facultatif et est destiné à fournir des notifications aux écouteurs intéressés. Si ce producteur a été configuré avec MaximumConcurrentSends ou défini avec une valeur supérieure à MaximumConcurrentSendsPerPartition 1, le gestionnaire est appelé simultanément.

Ce gestionnaire sera attendu après la publication du lot ; l’opération de publication n’est pas considérée comme terminée tant que l’appel du gestionnaire n’est pas retourné. Il est recommandé qu’aucune opération de longue durée ne soit effectuée dans le gestionnaire pour éviter d’avoir un impact négatif sur le débit.

Il n’est pas recommandé d’appeler CloseAsync(Boolean, CancellationToken) ou DisposeAsync() à partir de ce gestionnaire ; cela peut entraîner un scénario d’interblocage si ces appels sont attendus.

S’applique à

Voir aussi