2017-12-19 20 views
1

私はcosmos db triggerを使用していくつかの計算を行い、結果をdbに書き込むことができます。何かがうまくいかない場合は、最初の項目または特定の項目から開始する可能性があります。をもう一度計算してください。出来ますか?ありがとうAzure関数CosmosDbTrigger(最初のオプションから開始)

public static void Run([CosmosDBTrigger(
     databaseName: "db", 
     collectionName: "collection", 
     ConnectionStringSetting = "DocDbConnStr", 
     CreateLeaseCollectionIfNotExists = true, 
     LeaseCollectionName = "leases")]IReadOnlyList<Document> input, TraceWriter log) 
    { 

     ... 
    } 

答えて

2

現在、StartFromBeginningオプションはCosmos DB Triggerに公開されていません。デフォルト動作は、Functionが実行を開始してからの変更の受信を開始することです。ホスト/ランタイムのシャットダウン時にリース/チェックポイントが生成されるため、ホスト/ランタイムがバックアップされると最後のチェックポイント対象アイテムからピックアップされます。

トリガーは、エラーがバッチ自体に関連していない場合、同じバッチの無限ループ/予期しない請求/複数処理を生成する可能性があるため、デッドレターやエラー処理を実装しません(たとえば、電子メールを送信し、電子メールが失敗した場合、バッチ全体がフィード自体に関連しないエラーで再処理されるため、ユーザーは関数のコード内で独自のtry/catchまたはエラー処理ロジックを実装することを推奨します。イベントハブトリガーと同じアプローチです。

と言われていますが、私たちはいくつかの露出の過程にありますnew options on the Triggerと貢献者はan advanced retrying mechanismに取り組んでいます。

1

現在のオフセット(Cosmos DB変更フィードの位置)は、このケースではAzure関数の実行時にクライアントによって管理されます。

関数は、オフセットをリースコレクションに格納します(例ではleasesと呼ばれています)。

特定のアイテムから再起動するには、ある時点でリースコレクションのドキュメントのスナップショットを作成し、必要に応じて現在のコレクションをそのスナップショットに復元する必要があります。

私はCosmos DBコレクションを扱う一般的なツール以外のツールを自動化するツールに精通していません。

+0

ご意見ありがとうございます。いいえ、ごめんなさい。最初に私はリースの書類を取り除いた。そして、リース名を変更しました。どちらもうまくいきませんでした。 –

+0

リースを削除しても、機能が最初から開始されるわけではありません。リースが存在しない場合、機能は実行開始時(現在)から変更を受信し始めます。 –

関連する問題