/ / 2つのRESTエンドポイントが同じデータ-java、mongodb、rest、spring-mvc、spring-bootを読み取るときのレイテンシーの問題を処理する

2つのRESTエンドポイントが同じデータ(java、mongodb、rest、spring-mvc、spring-boot)を読み込んだ場合のレイテンシの問題を処理する

残りのAPIは2つあります。SpringBootとMongoDBを使用します。

最初に、クライアントは、mongoコレクションにレコードを挿入するapi1を呼び出します。 次に、数秒後、api2は挿入レコードを読み取って何らかの処理を試みます。

ただし、api2がレコードを読み取ろうとすると、api1による待機時間のためにコレクションに挿入されない場合があります。

その場合、api2はプロセスを実行できません。

考えられる1つのオプションは、api2がレコードを読み取り、それがまだmongoに挿入されない場合、theadを数秒間スリープさせてからウェイクします(レコードが存在するまで少し時間ができます)

他にどんなオプションがありますか?

更新: 2つのAPIは独立しています。 フローは、ビデオのアップロードが終了するとapi1を呼び出し、refidを含むメディアを挿入するとフローが終了するようなものです。次に、アプリケーションはrefidでビデオトランスコードが完了した後(通常30秒程度)、外部のビデオ処理システムからapi2へのコールバックを受信し、api2は挿入されたメディアにいくつかの更新を行います。非常に小さなサイズのビデオの場合、外部ビデオシステムは高速に動作し、その時点でアプリケーションがまだメディアをmongoに挿入しているコールバックを提供します

回答:

回答№1は1

あなたのapi1が終わったらapi2を呼び出し、挿入したIDを渡します。このように、api2が時期尚早に実行される必要はありません。もう1つの方法は、api1がメッセージを配置し、api2がメッセージを消費して処理するキューを使用することです(コメントで言及した@wargeユーザーのクレジット)


回答№2の場合は0

ユースケースからは、それほど多くの選択肢はありません。

クリーンな方法は、アップロード時にドキュメントを作成することです。これにより、そのapi1とapi2が更新され、「見つかりません」という例外がなくなります。