Spring WebFlux を使用しています。ユーザーへのメイン応答をブロックしないメソッドの一部として非同期タスクを実行する必要があります。具体的には、メインタスクの完了後に、応答を遅らせることなく非同期メソッドを呼び出したいと考えています。
これが私が達成しようとしていることの簡略版です:
public MonopublishPackage(RequestDTO requestDTO) { return publishPackageService.doSomething(requestDTO) .flatMap(responseDTO -> doSomethingInAsync(requestDTO, responseDTO) .thenReturn(responseDTO) ); } // Method that simulates an asynchronous task with a 5-second delay public Mono doSomethingInAsync(RequestDTO requestDTO, ResponseDTO responseDTO) { return Mono.delay(Duration.ofSeconds(5)) .then(); // Converts the delayed Mono to Mono }
この呼び出しが完了したら、doSomethingInAsync(requestDTO, responseDTO) を非同期で実行したいと考えています。
doSomethingInAsync メソッドは非ブロッキングであり、メインの応答を遅延させない必要があります。
問題:
doSomethingInAsync メソッドが実行されていますが、応答がブロックされているか、意図したとおりに非同期で実行されていない可能性があります。 doSomethingInAsync が非同期で実行され、ユーザーへの応答がブロックされないようにするにはどうすればよいですか?
詳細:
publishPackageService.doSomething(requestDTO): Mono を返します。
doSomethingInAsync(requestDTO, responseDTO): 応答をブロックせずに実行したい非同期メソッドです。
質問:
応答をブロックせずに doSomethingInAsync がバックグラウンドで確実に実行されるようにするにはどうすればよいですか?
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3