現在、私はいくつかの制限を設けて、SpringブートのAOP方式でのリクエストタイムアウト管理を実装するアプローチを模索しています。要件/制限は以下のように述べている:SpringブートでAOP方式でリクエストタイムアウト管理を実装する方法
- 本来の目的は、APIリクエストの処理時間が5秒を超えた場合は、直接、タイムアウトの結果を返す代わりに、残りのAPIがあることを
の処理を続けるということです監視されているのは、標準のバネmvcレストコントローラです。すべてのAPIは、内部のこのようなJSON文字列を返すされています
@RestController public class xxxxxx { @RequestMapping(value = "xxxxxxx") public String xxxxxx(@RequestParam(value = "xxxx", required = true) String xxxx) { .... return json.toString(); } }
- タイムアウトロジックはAOP
- (実数は一部を意味する) によって実装される必要がある変更が意味し、コントローラに行われるべきではありません:リクエスト生成アプローチは変更しないでください。戻り値の型は、私はすでに完全に春の非同期での問題そのものを解決することができます1つの答え(Async approach)を発見した、とタイムアウトリターン結果は(NO「呼び出し可能< ...>」許可)
を変更しないべきではありません非常にきれいですが、戻り値の型が変更され、コントローラのコードにも触れています。私はAOPを使用している解決策(AOP approach)も見つけましたが、シナリオは私のものとは全く異なります。すでにビジネスロジックをAOPクラスに移行していますが、コントローラコードに触れることはできません。誰かが解決策を提供できるのであれば、私は感謝しています。制限をすべて満たすことはできませんが、違いを最小限に抑えるソリューションも認められています。