私の Spring アプリケーションでは、RESTTemplate を使用して外部 API からいくつかの情報を取得します。この API では、リクエストを行うと、別のリクエストを行うまでそのレスポンスを待つ必要があります。だからこそ、これをどうしようか悩んでいます。もちろん、この API からの応答時間は毎回異なるため、タイマーなどを使用することはできません。
残念ながら、このアプリには RESTTemplate が必要であり、変更できません。
私の Spring アプリケーションでは、RESTTemplate を使用して外部 API からいくつかの情報を取得します。この API では、リクエストを行うと、別のリクエストを行うまでそのレスポンスを待つ必要があります。だからこそ、これをどうしようか悩んでいます。もちろん、この API からの応答時間は毎回異なるため、タイマーなどを使用することはできません。
残念ながら、このアプリには RESTTemplate が必要であり、変更できません。
シングルトン Bean でフラグを使用して、これを実装できます。サービスを呼び出す前に、それが であるかどうかを確認してくださいfalse
。false
フラグtrue
を立ててサービスを呼び出す場合。終了する前にフラグを立てfalse
ます。
そのflag == true
ため、サービスが進行中の場合は、新しいリクエストを送信できます。
通常、リクエストを行うときは応答を待つ必要がありますが、受信データをリッスンしているサーバーソケットを開き、応答を受信したら、それがどのような種類の応答であるかを確認してから、それを受け入れるか拒否することができます。したがって、クライアント ソケットで要求を行い、サーバー ソケットで応答を受け取ります。
http://docs.oracle.com/javase/tutorial/networking/sockets/clientServer.html
http://docs.oracle.com/javase/6/docs/api/java/net/ServerSocket.html