Używam Spring Boot to build a RESTful web service. Moje IDE to Eclipse Oxygen.Spring-Boot: Obsługuj wiele żądań jednocześnie
wyślę wielu żądań HTTP GET w co 2 sekundy przez Chrome, ale są one wywołane pojedynczo. Każde żądanie będzie czekać na zakończenie poprzedniego żądania.
Oto mój kod kontrolera:
@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);
}
}
Moja konsola out put jest:
wyjścieThu 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
Konsola pokazuje, że kontroler jest nazywany co 5 sekund. Ale wysyłam żądania co 2 sekundy.
Jak mogę obsłużyć jednocześnie wiele przychodzących żądań? (Powinny widzę wyjścia konsoli co 2 sekundy)
UPDATE:
Gdybym wysyłania żądań w różnych przeglądarkach, to działa doskonale. Jeśli testuję go w tej samej przeglądarce/aplikacji, która dzieli sesję, problem zostanie ujawniony.
Czy można akceptować równoczesne wielokrotne żądania od w tej samej sesji?
Dzięki!
Nie mogę tego odtworzyć. Domyślnie aplikacje sieciowe Spring Boot są wielowątkowe i obsługują jednocześnie wiele żądań. Korzystasz z programu Embedded Tomcat? Czy zmieniłeś jakieś domyślne ustawienia wątków (np. 'Server.tomcat.max-threads')? –
@KyleAnderson kod działa poprawnie, jeśli wysyłam żądania z różnych przeglądarek. Problem pojawia się, gdy wysyłam żądania (otwarte karty) w tej samej przeglądarce. Zaktualizowałem sprawdzanie poczty. ty! –
To _może być specyficznym dla przeglądarki dziwactwem. W systemie Windows 10 wydaje się, że Chrome i Firefox umieszczają wiele żądań w tym samym adresie URL, podczas gdy IE, Edge i curl nie. –