私は立ち往生しており、次の問題に対する体系的なアプローチまたは最適化されたソリューションを探しています。
私はそれが少し長いことを認識しており、明確さを最大化するという私の目的を伝えたいと思っていました.
異なるタイム スケジュールで処理するために、データ パケット (連絡先の詳細のグループ) を 3 つのサードパーティ アプリケーション (T1、T2、T3) に統合して送信するアプリケーション (A) があります。これらのサードパーティはすべて、同じ方法でデータを処理します。サービスの依存と遅延を回避するために、これら 3 つすべてを均等に維持しています。
「A」は午前 8 時から 10 時の間にデータ (最大 25 MB) を統合し、処理のために T1 に送信します。
「A」は、午後 10 時 1 分から午後 12 時までのデータ (最大 35 MB) を統合し、処理のために T2 に送信します。
「A」は午後 14 時から 16 時の間にデータ (最大 15 MB) を統合し、処理のために T3 に送信します。
ほとんどの場合、一部のサードパーティは、過負荷または特定のデータ品質のために、「A」から提供されたデータの一部のみを処理します。そして、これらのサードパーティ アプリケーションは、処理済みのデータと未処理のデータを 'A' に報告します。最後に (アプリケーション「A」で) 未処理のデータを取得したら、すべてのデータが処理されるまで、この未処理のデータ (データ要素) を他の利用可能なサードパーティ (最初に拒否したサードパーティを除く) にアップロードすることを再試行したいと考えました。または、利用可能なすべてのサードパーティに連絡します。
つまり、T1 が A からの一部のデータを未処理のままにしておく場合 (午前 8 時から 10 時のスロット)、T2 または T3 がさらにデータを考慮に入れる場合は、T2 または T3、またはその両方にアプローチできます。同様に;
T2 が A から未処理の場合 (午後 10 時 1 分から午後 12 時スロット)、T1 または T3 がさらにデータを考慮すれば、T1 または T3、またはその両方にアプローチできます。
T3 が A から処理されていない場合 (午後 14 時から 16 時までのスロット)、T1 または T2 がさらにデータを考慮すれば、T1 または T2、またはその両方にアプローチできます。
最後に、特定の日の終わり (午後 18 時) に、すべてのサードパーティからの未処理のデータをすべてローカル データベースに保存する必要があります。
基本的に 3 つのキュー (コンシューマーとして T を表す) とプロデューサー データ構造 (A を表す) を使用するアルゴリズムのドラフト バージョンを念頭に置いています。このプロデューサー データ構造は、有効期限のタイム スタンプと共にデータ チャックを個々のキューにプッシュします。しかし、私はそれを結論に導くことができません。
オプションの解決策を案内できる場合は、事前に感謝します。