Partager via


EventHubBufferedProducerClient.SendEventBatchFailedAsync Événement

Définition

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.

public event Func<Azure.Messaging.EventHubs.Producer.SendEventBatchFailedEventArgs,System.Threading.Tasks.Task> SendEventBatchFailedAsync;
member this.SendEventBatchFailedAsync : Func<Azure.Messaging.EventHubs.Producer.SendEventBatchFailedEventArgs, System.Threading.Tasks.Task> 
Public Custom Event SendEventBatchFailedAsync As Func(Of SendEventBatchFailedEventArgs, Task) 

Type d'événement

Exceptions

Si une tentative de suppression d’un gestionnaire qui ne correspond pas au gestionnaire actuel inscrit est effectuée.

Si une tentative d’ajout d’un gestionnaire est effectuée alors qu’un gestionnaire est actuellement inscrit.

Remarques

Si un échec temporaire se produit pendant la publication, ce gestionnaire n’est pas appelé immédiatement ; elle n’est appelée qu’après avoir appliqué la stratégie de nouvelle tentative et toutes les nouvelles tentatives éligibles ont été épuisées. Si la publication réussit pendant une nouvelle tentative, ce gestionnaire n’est pas appelé.

Étant donné que les applications n’ont pas de contrôle déterministe sur les lots défaillants, il est recommandé que l’application définisse un nombre généreux de nouvelles tentatives et essaie l’intervalle de délai d’expiration dans .RetryOptions Cela permet aux utilisateurs d’avoir EventHubBufferedProducerClient plus de chances de se remettre d’échecs temporaires. Cela est particulièrement important lorsque vous vérifiez que l’ordre des événements est nécessaire.

Il n’est pas nécessaire de désinscrire explicitement ce gestionnaire ; il sera automatiquement désinscrit quand CloseAsync(Boolean, CancellationToken) ou DisposeAsync() est appelé.

S’applique à

Voir aussi