EventHubBufferedProducerClient クラス

定義

のインスタンスを特定の EventData イベント ハブに発行するクライアント。 イベントがエンキューされるときに指定されたオプションによっては、自動的にパーティションに割り当てられるか、指定されたパーティション キーに従ってグループ化されるか、または特定の要求されたパーティションが割り当てられる場合があります。

EventHubBufferedProducerClient 、イベントがバッファーに収集される遅延モデルを使用する代わりに、すぐに発行されません。これにより、バッチがいっぱいになった場合や MaximumWaitTime 、 が新しいイベントがエンキューされずに経過したときに効率的にバッチ処理および発行される可能性があります。

このモデルは、イベントが発行されるタイミングに関して、非決定論的なタイミングを犠牲にして、バッチ管理の負担を呼び出し元からシフトすることを目的としています。 考慮すべきその他のトレードオフもあります。

  • アプリケーションがクラッシュした場合、バッファー内のイベントは発行されません。 データ損失を防ぐために、呼び出し元は と SendEventBatchFailedAsync ハンドラーを使用して発行の進行状況をSendEventBatchSucceededAsync追跡することをお勧めします。
  • パーティション キーを指定するイベントには、他のプロデューサーと同じキーを使用するイベントとは異なるパーティションが割り当てられる場合があります。
  • 万一、パーティションが一時的に使用できなくなった場合、 は他の EventHubBufferedProducerClient プロデューサーよりも復旧に時間がかかる場合があります。

決定論的な結果でイベントをすぐに公開することが重要なシナリオでは、パーティション キーが他のパブリッシャーと一致するパーティションに割り当てられているか、可用性の最大化が要件である場合は、 を EventHubProducerClient 使用することをお勧めします。

public class EventHubBufferedProducerClient : IAsyncDisposable
type EventHubBufferedProducerClient = class
    interface IAsyncDisposable
Public Class EventHubBufferedProducerClient
Implements IAsyncDisposable
継承
EventHubBufferedProducerClient
実装

注釈

EventHubBufferedProducerClientは、アプリケーションの有効期間中はシングルトンとしてキャッシュして使用しても安全です。これは推奨される方法です。 プロデューサーは、効率的なネットワーク、CPU、メモリの使用を確保する責任があります。 CloseAsync(Boolean, CancellationToken)DisposeAsync()または、イベントがエンキューされない場合、またはアプリケーションのシャットダウン時に を呼び出す必要があります。バッファーをフラッシュしてリソースを適切にクリーンアップできるようにします。

コンストラクター

EventHubBufferedProducerClient()

テスト目的でプロデューサーをモックするために使用されます。

EventHubBufferedProducerClient(EventHubConnection, EventHubBufferedProducerClientOptions)

EventHubBufferedProducerClient クラスの新しいインスタンスを初期化します。

EventHubBufferedProducerClient(String)

EventHubBufferedProducerClient クラスの新しいインスタンスを初期化します。

EventHubBufferedProducerClient(String, EventHubBufferedProducerClientOptions)

EventHubBufferedProducerClient クラスの新しいインスタンスを初期化します。

EventHubBufferedProducerClient(String, String)

EventHubBufferedProducerClient クラスの新しいインスタンスを初期化します。

EventHubBufferedProducerClient(String, String, AzureNamedKeyCredential, EventHubBufferedProducerClientOptions)

EventHubBufferedProducerClient クラスの新しいインスタンスを初期化します。

EventHubBufferedProducerClient(String, String, AzureSasCredential, EventHubBufferedProducerClientOptions)

EventHubBufferedProducerClient クラスの新しいインスタンスを初期化します。

EventHubBufferedProducerClient(String, String, EventHubBufferedProducerClientOptions)

EventHubBufferedProducerClient クラスの新しいインスタンスを初期化します。

EventHubBufferedProducerClient(String, String, TokenCredential, EventHubBufferedProducerClientOptions)

EventHubBufferedProducerClient クラスの新しいインスタンスを初期化します。

プロパティ

EventHubName

このプロデューサーが接続されている Event Hub の名前。このプロデューサーを含む Event Hubs 名前空間に固有です。

FullyQualifiedNamespace

このプロデューサーが現在関連付けられている完全修飾 Event Hubs 名前空間は、 {yournamespace}.servicebus.windows.netのようになります。

Identifier

バッファー処理されたプロデューサーを識別する一意の名前。

IsClosed

これが EventHubBufferedProducerClient 閉じられているかどうかを示します。

IsPublishing

これが EventHubBufferedProducerClient 現在アクティブで、キューに登録されたイベントを発行しているかどうかを示します。

TotalBufferedEventCount

現在バッファーに格納され、すべてのパーティションにわたって発行されるのを待機しているイベントの合計数。

メソッド

CloseAsync(Boolean, CancellationToken)

プロデューサーを閉じ、 によって使用されるすべてのリソースをクリーンするために必要なタスクをEventHubBufferedProducerClient実行します。

DisposeAsync()

プロデューサーを閉じ、 によって使用されるすべてのリソースをクリーンするために必要なタスクをEventHubBufferedProducerClient実行します。

EnqueueEventAsync(EventData, CancellationToken)

イベント ハブに発行するバッファーに をエンキュー EventData します。 このメソッドの呼び出し時にバッファーに容量がない場合、領域が使用可能になるまで待機し、 が eventData エンキューされていることを確認します。

この呼び出しが返されると、 eventData はバッファーに受け入れられますが、まだ発行されていない可能性があります。 発行は、バッファーが処理されるときに、将来、非決定的な時点で行われます。

EnqueueEventAsync(EventData, EnqueueEventOptions, CancellationToken)

イベント ハブに発行するバッファーに をエンキュー EventData します。 このメソッドの呼び出し時にバッファーに容量がない場合、領域が使用可能になるまで待機し、 が eventData エンキューされていることを確認します。

この呼び出しが返されると、 eventData はバッファーに受け入れられますが、まだ発行されていない可能性があります。 発行は、バッファーが処理されるときに、将来、非決定的な時点で行われます。

EnqueueEventsAsync(IEnumerable<EventData>, CancellationToken)

のセット EventData をバッファーにエンキューして、イベント ハブに発行します。 このメソッドの呼び出し時にバッファーに十分な容量がない場合、領域が使用可能になるまで待機し、セット内eventsのすべてがeventsエンキューされていることを確認します。

この呼び出しが返されると、 events はバッファーに受け入れられますが、まだ発行されていない可能性があります。 発行は、バッファーが処理されるときに、将来、非決定的な時点で行われます。

EnqueueEventsAsync(IEnumerable<EventData>, EnqueueEventOptions, CancellationToken)

のセット EventData をバッファーにエンキューして、イベント ハブに発行します。 このメソッドの呼び出し時にバッファーに十分な容量がない場合、領域が使用可能になるまで待機し、セット内eventsのすべてがeventsエンキューされていることを確認します。

この呼び出しが返されると、 events はバッファーに受け入れられますが、まだ発行されていない可能性があります。 発行は、バッファーが処理されるときに、将来、非決定的な時点で行われます。

FlushAsync(CancellationToken)

バッファー内のすべてのイベントを直ちに発行しようとします。 これにより、複数のバッチが発行される可能性があります。それぞれの結果は、 ハンドラーと SendEventBatchFailedAsync ハンドラーによってSendEventBatchSucceededAsync個別に報告されます。

このメソッドが完了すると、バッファーは空になります。

GetBufferedEventCount(String)

バッファーに格納され、特定のパーティションに対して発行されるのを待機しているイベントの数。

GetEventHubPropertiesAsync(CancellationToken)

存在するパーティションの数とその識別子など、接続が関連付けられているイベント ハブに関する情報を取得します。

GetPartitionIdsAsync(CancellationToken)

イベント ハブのパーティションの識別子のセットを取得します。

GetPartitionPropertiesAsync(String, CancellationToken)

パーティション イベント ストリームで使用可能なイベントを記述する要素など、イベント ハブの特定のパーティションに関する情報を取得します。

ListPartitionIdsAsync(EventHubProducerClient, CancellationToken)

Event Hub パーティションの識別子を照会します。

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

すべての有効な再試行が SendEventBatchFailedAsync 使い果たされた後、イベントのバッチの発行に失敗した場合にイベントを発生させます。

OnSendSucceededAsync(IReadOnlyList<EventData>, String, CancellationToken)

イベントのバッチの SendEventBatchSucceededAsync 正常な発行時にイベントを発生させます。

イベント

SendEventBatchFailedAsync

イベント ハブに発行できなかったイベントのバッチに対して呼び出されます。イベントをエンキューする前に、このハンドラーを指定する必要があります。 このプロデューサーが で MaximumConcurrentSends 構成されておらず、 MaximumConcurrentSendsPerPartition 両方が 1 に設定されている場合、ハンドラーは同時に呼び出されます。

このハンドラー内から または EnqueueEventsAsync(IEnumerable<EventData>, EnqueueEventOptions, CancellationToken) を呼び出EnqueueEventAsync(EventData, EnqueueEventOptions, CancellationToken)して、イベントの再送信を試みるのも安全です。 これを行うと、バッファーの末尾に配置されることに注意することが重要です。元の注文は維持されません。

このハンドラーは、バッチの発行に失敗した後に待機されます。発行操作は、ハンドラー呼び出しが戻るまで完了したとは見なされません。 スループットに悪影響を与えないように、ハンドラーで実行時間の長い操作を実行しないことをお勧めします。

このハンドラーから または DisposeAsync() を呼び出すのはお勧めしません。呼び出CloseAsync(Boolean, CancellationToken)しが待機されている場合は、デッドロック シナリオが発生する可能性があります。

SendEventBatchSucceededAsync

イベントの各バッチがイベント ハブに正常に発行された後に呼び出されます。このハンドラーは省略可能であり、関心のあるリスナーに通知を提供することを目的としています。 このプロデューサーが 1 より大きい または MaximumConcurrentSendsPerPartitionMaximumConcurrentSends構成されている場合、ハンドラーは同時に呼び出されます。

このハンドラーは、バッチの発行後に待機されます。ハンドラー呼び出しが戻るまで、発行操作は完了と見なされません。 スループットに悪影響を与えないように、ハンドラーで実行時間の長い操作を実行しないことをお勧めします。

このハンドラーから または DisposeAsync() を呼び出すのはお勧めしません。呼び出CloseAsync(Boolean, CancellationToken)しが待機されている場合は、デッドロック シナリオが発生する可能性があります。

適用対象

こちらもご覧ください