Freigeben über


EventHubBufferedProducerClient Klasse

Definition

Ein Client, der für die Veröffentlichung von Instanzen von EventData in einem bestimmten Event Hub verantwortlich ist. Je nach den Optionen, die beim Queuieren von Ereignissen angegeben werden, können sie automatisch einer Partition zugewiesen, nach dem angegebenen Partitionsschlüssel gruppiert oder einer speziell angeforderten Partition zugewiesen werden.

Die EventHubBufferedProducerClient veröffentlicht nicht sofort, sondern verwendet ein verzögertes Modell, bei dem Ereignisse in einem Puffer gesammelt werden, sodass sie effizient batchiert und veröffentlicht werden können, wenn der Batch voll ist oder ohne MaximumWaitTime neue Ereignisse abgelaufen ist.

Dieses Modell soll die Belastung der Batchverwaltung von Anrufern auf Kosten eines nicht deterministischen Zeitpunkts für den Zeitpunkt der Veröffentlichung von Ereignissen verlagern. Es gibt auch zusätzliche Kompromisse, die zu berücksichtigen sind:

  • Wenn die Anwendung abstürzt, wurden die Ereignisse im Puffer nicht veröffentlicht. Um Datenverluste zu verhindern, werden Aufrufer aufgefordert, den Veröffentlichungsfortschritt mithilfe der SendEventBatchSucceededAsync Handler und SendEventBatchFailedAsync nachzuverfolgen.
  • Ereignisse, die einen Partitionsschlüssel angeben, können einer anderen Partition zugewiesen werden als denen, die denselben Schlüssel mit anderen Produzenten verwenden.
  • Im unwahrscheinlichen Fall, dass eine Partition vorübergehend nicht verfügbar ist, kann die EventHubBufferedProducerClient Wiederherstellung länger dauern als andere Hersteller.

In Szenarien, in denen es wichtig ist, Ereignisse sofort mit einem deterministischen Ergebnis zu veröffentlichen, stellen Sie sicher, dass Partitionsschlüssel einer Partition zugewiesen werden, die mit anderen Herausgebern konsistent ist, oder wenn die Maximierung der Verfügbarkeit eine Anforderung ist, wird die Verwendung von EventHubProducerClient empfohlen.

public class EventHubBufferedProducerClient : IAsyncDisposable
type EventHubBufferedProducerClient = class
    interface IAsyncDisposable
Public Class EventHubBufferedProducerClient
Implements IAsyncDisposable
Vererbung
EventHubBufferedProducerClient
Implementiert

Hinweise

Die EventHubBufferedProducerClient kann sicher zwischengespeichert und als Singleton für die Lebensdauer einer Anwendung verwendet werden, was der empfohlene Ansatz ist. Der Hersteller ist dafür verantwortlich, eine effiziente Netzwerk-, CPU- und Arbeitsspeichernutzung sicherzustellen. Das Aufrufen von oder CloseAsync(Boolean, CancellationToken)DisposeAsync() , wenn keine weiteren Ereignisse mehr in die Warteschlange gestellt werden oder wenn die Anwendung heruntergefahren wird, ist erforderlich, damit der Puffer geleert und Ressourcen ordnungsgemäß bereinigt werden können.

Konstruktoren

EventHubBufferedProducerClient()

Wird zum Simulieren des Herstellers zu Testzwecken verwendet.

EventHubBufferedProducerClient(EventHubConnection, EventHubBufferedProducerClientOptions)

Initialisiert eine neue Instanz der EventHubBufferedProducerClient-Klasse.

EventHubBufferedProducerClient(String)

Initialisiert eine neue Instanz der EventHubBufferedProducerClient-Klasse.

EventHubBufferedProducerClient(String, EventHubBufferedProducerClientOptions)

Initialisiert eine neue Instanz der EventHubBufferedProducerClient-Klasse.

EventHubBufferedProducerClient(String, String)

Initialisiert eine neue Instanz der EventHubBufferedProducerClient-Klasse.

EventHubBufferedProducerClient(String, String, AzureNamedKeyCredential, EventHubBufferedProducerClientOptions)

Initialisiert eine neue Instanz der EventHubBufferedProducerClient-Klasse.

EventHubBufferedProducerClient(String, String, AzureSasCredential, EventHubBufferedProducerClientOptions)

Initialisiert eine neue Instanz der EventHubBufferedProducerClient-Klasse.

EventHubBufferedProducerClient(String, String, EventHubBufferedProducerClientOptions)

Initialisiert eine neue Instanz der EventHubBufferedProducerClient-Klasse.

EventHubBufferedProducerClient(String, String, TokenCredential, EventHubBufferedProducerClientOptions)

Initialisiert eine neue Instanz der EventHubBufferedProducerClient-Klasse.

Eigenschaften

EventHubName

Der Name des Event Hubs, mit dem dieser Producer verbunden ist, spezifisch für den Event Hubs-Namespace, der ihn enthält.

FullyQualifiedNamespace

Der vollqualifizierte Event Hubs-Namespace, dem dieser Produzent derzeit zugeordnet ist, der wahrscheinlich ähnlich {yournamespace}.servicebus.windows.netsein wird.

Identifier

Ein eindeutiger Name zum Identifizieren des gepufferten Produzenten.

IsClosed

Gibt an, ob diese EventHubBufferedProducerClient geschlossen wurde oder nicht.

IsPublishing

Gibt an, ob dies EventHubBufferedProducerClient derzeit aktiv ist, und gibt ereignisse in der Warteschlange veröffentlicht.

TotalBufferedEventCount

Die Gesamtzahl der Ereignisse, die derzeit gepuffert werden und auf die Veröffentlichung warten, über alle Partitionen hinweg.

Methoden

CloseAsync(Boolean, CancellationToken)

Schließt den Producer und führt die Aufgaben aus, die zum sauber aller von EventHubBufferedProducerClientverwendeten Ressourcen erforderlich sind.

DisposeAsync()

Schließt den Producer und führt die Aufgaben aus, die zum sauber aller von EventHubBufferedProducerClientverwendeten Ressourcen erforderlich sind.

EnqueueEventAsync(EventData, CancellationToken)

Quediert eine EventData in den Puffer, der im Event Hub veröffentlicht werden soll. Wenn beim Aufrufen dieser Methode keine Kapazität im Puffer vorhanden ist, wartet sie, bis Speicherplatz verfügbar ist, und stellt sicher, dass die eventData Warteschlange in die Warteschlange gestellt wurde.

Wenn dieser Aufruf zurückgibt, wurde der eventData im Puffer akzeptiert, aber möglicherweise noch nicht veröffentlicht. Die Veröffentlichung erfolgt in Zukunft an einem nicht deterministischen Punkt, während der Puffer verarbeitet wird.

EnqueueEventAsync(EventData, EnqueueEventOptions, CancellationToken)

Quediert eine EventData in den Puffer, der im Event Hub veröffentlicht werden soll. Wenn beim Aufrufen dieser Methode keine Kapazität im Puffer vorhanden ist, wartet sie, bis Speicherplatz verfügbar ist, und stellt sicher, dass die eventData Warteschlange in die Warteschlange gestellt wurde.

Wenn dieser Aufruf zurückgibt, wurde der eventData im Puffer akzeptiert, aber möglicherweise noch nicht veröffentlicht. Die Veröffentlichung erfolgt in Zukunft an einem nicht deterministischen Punkt, während der Puffer verarbeitet wird.

EnqueueEventsAsync(IEnumerable<EventData>, CancellationToken)

Quediert einen Satz von EventData in den Puffer, der im Event Hub veröffentlicht werden soll. Wenn beim Aufrufen dieser Methode nicht genügend Kapazität im Puffer vorhanden ist, wartet sie, bis Speicherplatz verfügbar ist, und stellt sicher, dass alle events in der events Gruppe in die Warteschlange gestellt wurden.

Wenn dieser Aufruf zurückgibt, wurden die events im Puffer akzeptiert, aber möglicherweise noch nicht veröffentlicht. Die Veröffentlichung erfolgt in Zukunft an einem nicht deterministischen Punkt, während der Puffer verarbeitet wird.

EnqueueEventsAsync(IEnumerable<EventData>, EnqueueEventOptions, CancellationToken)

Quediert einen Satz von EventData in den Puffer, der im Event Hub veröffentlicht werden soll. Wenn beim Aufrufen dieser Methode nicht genügend Kapazität im Puffer vorhanden ist, wartet sie, bis Speicherplatz verfügbar ist, und stellt sicher, dass alle events in der events Gruppe in die Warteschlange gestellt wurden.

Wenn dieser Aufruf zurückgibt, wurden die events im Puffer akzeptiert, aber möglicherweise noch nicht veröffentlicht. Die Veröffentlichung erfolgt in Zukunft an einem nicht deterministischen Punkt, während der Puffer verarbeitet wird.

FlushAsync(CancellationToken)

Versucht, alle Ereignisse sofort im Puffer zu veröffentlichen. Dies kann dazu führen, dass mehrere Batches veröffentlicht werden, die jeweils einzeln von den SendEventBatchSucceededAsync Handlern und SendEventBatchFailedAsync gemeldet werden.

Nach Abschluss dieser Methode ist der Puffer leer.

GetBufferedEventCount(String)

Die Anzahl der Ereignisse, die gepuffert werden und auf die Veröffentlichung für eine bestimmte Partition warten.

GetEventHubPropertiesAsync(CancellationToken)

Ruft Informationen zum Event Hub ab, dem die Verbindung zugeordnet ist, einschließlich der Anzahl der vorhandenen Partitionen und deren Bezeichner.

GetPartitionIdsAsync(CancellationToken)

Ruft den Satz von Bezeichnern für die Partitionen eines Event Hubs ab.

GetPartitionPropertiesAsync(String, CancellationToken)

Ruft Informationen zu einer bestimmten Partition für einen Event Hub ab, einschließlich Elementen, die die verfügbaren Ereignisse im Partitionsereignisstream beschreiben.

ListPartitionIdsAsync(EventHubProducerClient, CancellationToken)

Fragt die Bezeichner der Event Hub-Partitionen ab.

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

Verantwortlich für das Auslösen des Ereignisses SendEventBatchFailedAsync bei der fehlgeschlagenen Veröffentlichung eines Batches von Ereignissen, nachdem alle berechtigten Wiederholungen erschöpft sind.

OnSendSucceededAsync(IReadOnlyList<EventData>, String, CancellationToken)

Verantwortlich für das Auslösen des Ereignisses SendEventBatchSucceededAsync nach erfolgreicher Veröffentlichung eines Batches von Ereignissen.

Ereignisse

SendEventBatchFailedAsync

Dieser Handler, der für jeden Batch von Ereignissen aufgerufen wird, der nicht im Event Hub veröffentlicht werden konnte, muss bereitgestellt werden, bevor Ereignisse in die Warteschlange gestellt werden können. Wenn dieser Producer nicht mit MaximumConcurrentSends konfiguriert wurde und MaximumConcurrentSendsPerPartition beide auf 1 festgelegt wurden, wird der Handler gleichzeitig aufgerufen.

Es ist sicher, zu versuchen, die Ereignisse erneut zu senden, indem Sie oder EnqueueEventsAsync(IEnumerable<EventData>, EnqueueEventOptions, CancellationToken) innerhalb dieses Handlers aufrufenEnqueueEventAsync(EventData, EnqueueEventOptions, CancellationToken). Es ist wichtig zu beachten, dass sie dadurch am Ende des Puffers platziert werden. die ursprüngliche Bestellung wird nicht beibehalten.

Dieser Handler wird erwartet, nachdem der Batch nicht veröffentlicht wurde. der Veröffentlichungsvorgang gilt erst als abgeschlossen, wenn der Handleraufruf zurückgegeben wird. Es wird empfohlen, dass im Handler keine Vorgänge mit langer Ausführung ausgeführt werden, um negative Auswirkungen auf den Durchsatz zu vermeiden.

Es wird nicht empfohlen, oder DisposeAsync() über diesen Handler aufzurufenCloseAsync(Boolean, CancellationToken). Dies kann zu einem Deadlockszenario führen, wenn diese Aufrufe erwartet werden.

SendEventBatchSucceededAsync

Dieser Handler wird aufgerufen, nachdem jeder Batch von Ereignissen erfolgreich im Event Hub veröffentlicht wurde. Dieser Handler ist optional und soll Benachrichtigungen für interessierte Listener bereitstellen. Wenn dieser Producer mit MaximumConcurrentSends größer als 1 konfiguriert oder MaximumConcurrentSendsPerPartition festgelegt wurde, wird der Handler gleichzeitig aufgerufen.

Dieser Handler wird nach der Veröffentlichung des Batches erwartet. der Veröffentlichungsvorgang gilt erst als abgeschlossen, wenn der Handleraufruf zurückgegeben wird. Es wird empfohlen, dass im Handler keine Vorgänge mit langer Ausführung ausgeführt werden, um negative Auswirkungen auf den Durchsatz zu vermeiden.

Es wird nicht empfohlen, oder DisposeAsync() über diesen Handler aufzurufenCloseAsync(Boolean, CancellationToken). Dies kann zu einem Deadlockszenario führen, wenn diese Aufrufe erwartet werden.

Gilt für:

Weitere Informationen