私は、組織のCloud Foundryデプロイメントで実行されるデータ取り込みソリューションを作成するために、多くのSpring Cloud DataFlowと関連ドキュメントを読んできました。目標は、議論のために、おそらく1日3回、データのHTTPサービスをポーリングし、そのデータをPostgreSQLデータベースに挿入/更新することです。 HTTPサービスは、1日あたり10万件のレコードを提供しているようです。Spring Cloud DataFlow httpポーリングと重複排除
これまでの混乱のポイントは、ポーリングされたレコードを重複除外するためのDataFlowパイプラインのコンテキストでのベストプラクティスです。ソースデータには、ポーリングを追跡するのに役立つタイムスタンプフィールドはなく、粗い日レベルの日付フィールドのみがあります。また、遡及的に記録が更新されないという保証もありません。レコードは一意のIDを持つように見えるので、レコードをそのようにデッドアップすることができますが、DataFlowでそのロジックを実装するにはどうすればよいかをドキュメントに基づいて確信できません。私が知る限りでは、Spring Cloud Stream startersは、このアウトオブボックスを提供していません。私はSpring Integrationのsmart pollingについて読んでいましたが、それは私の懸念にも対処するためのものではないと思います。
私の直感は、ポーリングされたレコードがすでに挿入されているかどうかを判断するためにデータベースクエリを実行し、次に適切なレコードをターゲットデータベースに挿入するか、ストリームの下にそれらを渡すDataFlow StreamでカスタムプロセッサJavaコンポーネントを作成することです。 Streamアプリケーションで受け入れ可能な中間ステップでターゲットデータベースをクエリしていますか?また、Spring Cloud Taskにバッチ処理として実装することもできます。
DataFlowアプリケーションを進める最も良い方法は何ですか? DataFlow/Stream/Task/Integrationアプリケーションで説明した重複排除を実現するための共通/ベストプラクティスは何ですか?私はかなりのカスタムコードを書く必要があるので、私はスターターアプリの設定をコピーするか、ゼロから始めればよいのでしょうか? Spring Cloud DataFlowが必要なのでしょうか?DSLをまったく使用しているかどうかわからないからですか?すべての質問は申し訳ありませんが、Cloud FoundryやこれらのSpringプロジェクトには新しくなっているので、すべてをまとめていくのは難しいことです。
ご協力いただきありがとうございます。
私の答えを見る –