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 使用的线程数量有限。此数字不受传入请求数量的影响。所以我不建议基于内存进行节流。