我的主要目标是设置 Undertow 的最大并发请求连接限制。
我尝试通过属性进行配置来设置它。但这不起作用。
我研究了如何限制每个请求的最大连接数,并发现以下内容:
为了限制 undertow 中的连接,有必要实现 RequestLimitHandler 和 RequestLimit。
“Request Limiting Handler 限制并发请求数量的处理程序。如果数量超过限制,请求将排队。如果队列已满,则请求将被拒绝。”
http://undertow.io/undertow-docs/undertow-docs-1.2.0/#built-in-handlers
Run Code Online (Sandbox Code Playgroud)
我已经尝试了下一个实现,但此处理程序不会限制请求,因为它不会返回错误 503 响应,而且我无法与 MVC 方法绑定。
1. Test case:
@Bean
public UndertowServletWebServerFactory myUndertowServletWebServerFactory() {
final UndertowServletWebServerFactory factory = new UndertowServletWebServerFactory();
final HandlerWrapper handlerWrapperLimit = new HandlerWrapper() {
@Override
public HttpHandler wrap(final HttpHandler handler) {
final int maximumConcurrentRequests = 1;
final int queueSize = 100;
final RequestLimit requestLimit = new RequestLimit(maximumConcurrentRequests,
queueSize);
final RequestLimitingHandler limitHandler = new RequestLimitingHandler(requestLimit,
new ResponseCodeHandler(
StatusCodes.OK));
return limitHandler; …Run Code Online (Sandbox Code Playgroud)