Tôi đang sử dụng Spring Boot to build a RESTful web service. IDE của tôi là Eclipse Oxygen.Spring-Boot: Xử lý nhiều yêu cầu đồng thời
tôi gửi nhiều HTTP get yêu cầu trong mỗi 2 giây qua Chrome, nhưng họ được kích hoạt từng người một. Mỗi yêu cầu sẽ đợi yêu cầu trước đó kết thúc.
Đây là mã điều khiển của tôi:
@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);
}
}
console của tôi đặt ra là:
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
Giao diện điều khiển đầu ra cho thấy bộ điều khiển được gọi là mỗi 5 giây. Nhưng tôi gửi yêu cầu cứ sau 2 giây.
Tôi có thể xử lý đồng thời nhiều yêu cầu đến như thế nào? (Tôi sẽ thấy giao diện điều khiển đầu ra mỗi 2 giây)
CẬP NHẬT:
Nếu tôi gửi các yêu cầu trong các trình duyệt khác nhau, nó hoạt động một cách hoàn hảo. Nếu tôi kiểm tra trong cùng một trình duyệt/ứng dụng chia sẻ phiên, sự cố sẽ xảy ra.
Có thể chấp nhận nhiều yêu cầu đồng thời từ cùng một phiên không?
Cảm ơn!
Tôi không thể tạo lại điều này. Theo mặc định, các ứng dụng web khởi động Spring đa luồng và sẽ xử lý nhiều yêu cầu đồng thời. Bạn đang sử dụng Tomcat nhúng? Bạn đã thay đổi bất kỳ cài đặt chuỗi mặc định nào (ví dụ: 'server.tomcat.max-threads')? –
@KyleAnderson mã hoạt động tốt nếu tôi gửi yêu cầu từ các trình duyệt khác nhau. Sự cố hiển thị khi tôi gửi yêu cầu (tab đang mở) trong cùng một trình duyệt. Tôi cập nhật kiểm tra bài đăng của tôi. ty! –
This _might_ là một trình duyệt riêng biệt. Trên Windows 10, Chrome & Firefox dường như xếp hàng nhiều yêu cầu đến cùng một URL, trong khi IE, Edge và curl thì không. –