私はSpring Boot to build a RESTful web serviceを使用しています。私のIDEはEclipse Oxygenです。Spring-Boot:複数のリクエストを同時に処理する
私はクロームを通じて2秒ごとで複数 HTTP GETリクエストを送信するが、彼らは1によって1を誘発しています。各リクエストは、前のリクエストが完了するまで待機します。
Thu Sep 14 11:31:15 EDT 2017: ThreadId 25
Thu Sep 14 11:31:20 EDT 2017: ThreadId 26
Thu Sep 14 11:31:25 EDT 2017: ThreadId 28
Thu Sep 14 11:31:30 EDT 2017: ThreadId 30
コンソール出力はコントローラが5秒ごとと呼ばれていることを示しています
@RestController
@RequestMapping("/dummy")
public class DummyController {
@RequestMapping(method = RequestMethod.GET)
public ResponseEntity<Map<String, String>> dummytsp(@RequestParam(value="msg", defaultValue="Hello") String msg) {
System.out.println("" + new Date() + ": ThreadId " + Thread.currentThread().getId());
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Map<String, String> response = new HashMap<>();
response.put("message", msg);
return new ResponseEntity<>(response, HttpStatus.OK);
}
}
マイコンソールアウトプットは次のとおりです。
は、ここに私のコントローラのコードです。しかし、私はの2秒ごとにのリクエストを送信しています。
複数の着信要求を同時に処理する方法はありますか。
UPDATE(私は2秒ごとにコンソール出力が表示されるはずです):私は別のブラウザにリクエストを送信する場合
を、それが完璧に動作します。 セッションを共有する同じブラウザ/アプリケーションでテストすると、問題が発生します。
同じセッションから複数の同時リクエストを受け入れることはできますか?
ありがとうございます!
私はこれを再現できません。デフォルトでは、SpringブートWebアプリケーションはマルチスレッドであり、複数の要求を同時に処理します。 Embedded Tomcatを使用していますか?デフォルトのスレッド設定(たとえば 'server.tomcat.max-threads')を変更しましたか? –
@KyleAnderson私は別のブラウザから要求を送信する場合、コードが正常に動作します。同じブラウザでリクエスト(開いているタブ)を送信すると、問題が表示されます。私は私のポストplsのチェックを更新しました。タイ! –
これはブラウザ固有の特質である可能性があります。 Windows 10では、ChromeとFirefoxは複数のリクエストを同じURLにキューイングしているようですが、IE、Edge、およびカールはそうではありません。 –