java - Java Web 应用程序中 Web 请求的优先级

标签 java tomcat jakarta-ee

我正在尝试找到一种将优先级与 Web 请求相关联的方法。本质上,我希望我的 Web 容器(例如 Tomcat)始终首先处理具有更高优先级的 Web 请求。

例如说它当前正在处理许多优先级较低的 Web 请求,并且已达到其并发 Web 请求的限制。如果收到更高优先级的 Web 请求,它将暂停其中一个较低优先级的 Web 请求并处理更高优先级的请求。

这样做的目的是,有些web请求是为了批处理,最终会转化为一组优先级较低的web请求,预计耗时较长,而有些web请求是针对人与网站,不应延迟,因此具有更高的优先级。

这不一定是 Web 容器的功能。如果有另一种方法可以做到这一点(任何类型的任务调度程序,虽然我找不到任何尊重任务优先级的东西),但它符合这个问题的目的。

最佳答案

使用 Servlet 3.0 异步 servlet,这将让您在单独的线程(如果需要的话可以排队)而不是接受请求的线程中异步处理每个请求。为每个线程分配必要的优先级 (Thread.setPriority),批处理线程位于 Thread.MIN_PRIORITY,交互式线程位于 Thread.NORM_PRIORITY。不完全是您描述的暂停行为,但应该足够接近。 有关异步 servlet 的示例,请参阅 https://plumbr.eu/blog/java/how-to-use-asynchronous-servlets-to-improve-performance

关于java - Java Web 应用程序中 Web 请求的优先级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33881980/

相关文章:

java - 如何在简单的多线程条件下更新我的 JPanel?

java - float 组到字节数组,用于在 android 中的 Canvas 上显示位图

tomcat - 将选择事件记录到单独的文件中

java - 用于 Java EE 开发的 Eclipse 插件

java - Websphere : deployment logs location?

java - 研究 Java 项目中的资源上下文

java - 使用@batchsize 后jpa 性能崩溃

java - GoogleJsonResponseException : 400 Bad Request "Invalid query parameter type"

eclipse - 确定 Tomcat 根 - 为所有根文件获取 404

java - Spring 启动/Tomcat : HTTP -> HTTPS 301 Redirects