vert.x 应用程序节流
Throttling on vert.x application
我有一个 vert.x 应用程序托管在 Cloud Foundry 上。我必须实施一个限制条件,根据可用内存限制请求,就像 InterceptorHandler 在 Spring 中所做的那样。那么有没有办法在请求实际到达服务器内存之前拦截到服务器的HTTP请求?
我假设您的意图是尽快限制请求,这就是您所说的 "not reaching the memory"。
为此,您可以使用一个简单的全局处理程序,因为在 Vert.x 中每个处理程序都是某种拦截器。
router.route().handler(ctx -> {
// Probably you want to check some request properties
if (isThrottled(ctx)) {
ctx.response().setStatusCode(504).end();
}
else {
// All is good, continue
ctx.next();
}
});
不过,我还必须注意,与 Spring 不同,Vert.x 具有恒定的内存占用空间,因为 Vert.x 使用的线程数量有限。此数字不受传入请求数量的影响。所以我不建议基于内存进行节流。
我有一个 vert.x 应用程序托管在 Cloud Foundry 上。我必须实施一个限制条件,根据可用内存限制请求,就像 InterceptorHandler 在 Spring 中所做的那样。那么有没有办法在请求实际到达服务器内存之前拦截到服务器的HTTP请求?
我假设您的意图是尽快限制请求,这就是您所说的 "not reaching the memory"。
为此,您可以使用一个简单的全局处理程序,因为在 Vert.x 中每个处理程序都是某种拦截器。
router.route().handler(ctx -> {
// Probably you want to check some request properties
if (isThrottled(ctx)) {
ctx.response().setStatusCode(504).end();
}
else {
// All is good, continue
ctx.next();
}
});
不过,我还必须注意,与 Spring 不同,Vert.x 具有恒定的内存占用空间,因为 Vert.x 使用的线程数量有限。此数字不受传入请求数量的影响。所以我不建议基于内存进行节流。