変更フィード推定機能の実装

完了

変更フィード プロセッサにより変更が処理されると、これは時間ベースのポインターとして機能します。 ポインターの時間が変更フィード全体で前に進み、変更のバッチがデリゲートに送信されビジネス ロジックが実行されます。

変更フィード プロセッサは、ホスト アプリケーションの物理リソースによって制限される場合があります。 その場合、ほぼ即時に、変更フィード プロセッサを複数のホストに全体にスケールアウトする必要があり、変更フィードからの読み取りはすべて同時にフィードされることが仮定されます。

ただし、変更フィード ソリューションをスケールアウトする必要があるかどうかの判断は難しく、推定機能が必要になる場合があります。 変更フィード推定機能は、任意の時点でのプロセッサによる読み取りが保留中の変更の数を測定するプロセッサのサイドカー機能です。

推定器を実装するには、まずプロセッサを分析する必要があります。 この例では、プロセッサは、変更を処理する特定のリース コンテナーとデリゲートを使用して作成されます。

Container sourceContainer = client.GetContainer("cosmicworks", "products");

Container leaseContainer = client.GetContainer("cosmicworks", "productslease");

ChangeFeedProcessor processor = sourceContainer.GetChangeFeedProcessorBuilder<Product>(
    processorName: "productItemProcessor",
    onChangesDelegate: changeHandlerDelegate)
    .WithInstanceName("desktopApplication")
    .WithLeaseContainer(leaseContainer)
    .Build();

次に、未処理の変更数を確認するために、推定器によって変更フィードがポーリングされるたびに処理を実行するよう ChangesEstimationHandler 型を使用してデリゲートを実装する必要があります。

ChangesEstimationHandler changeEstimationDelegate = async (
    long estimation, 
    CancellationToken cancellationToken
) => {
    // Do something with the estimation
};

最後に、同じリース コンテナーを再利用するプロセッサと同様の方法で推定器を構築します。

ChangeFeedProcessor estimator = sourceContainer.GetChangeFeedEstimatorBuilder(
    processorName: "productItemEstimator",
    estimationDelegate: changeEstimationDelegate)
    .WithLeaseContainer(leaseContainer)
    .Build();