在滚动升级场景中,我想知道给定 Spring MVC 容器(由 Spring Boot 启动,在 Jetty 上运行)中何时没有 Activity 的 HTTP 请求。
这将允许以下流程:
- 在反向代理中禁用服务器
- 等待所有请求完成
- 执行升级
有没有办法知道 Spring MVC 或 Jetty 当前正在处理多少个请求?
最佳答案
您可以使用 Jetty 的 StatisticsHandler
和 JMX 获取有关 Activity 请求数量的信息。
如果您使用 Jetty 作为嵌入式容器(推荐方法),则可以使用 EmbeddedServletContainerCustomizer
进行设置:
@Bean
public EmbeddedServletContainerCustomizer containerCustomizer() {
return new EmbeddedServletContainerCustomizer() {
@Override
public void customize(ConfigurableEmbeddedServletContainer container) {
((JettyEmbeddedServletContainerFactory) container)
.addServerCustomizers(new JettyServerCustomizer() {
@Override
public void customize(Server server) {
MBeanContainer mbContainer = new MBeanContainer(
ManagementFactory.getPlatformMBeanServer());
server.addEventListener(mbContainer);
server.addBean(mbContainer);
StatisticsHandler statisticsHandler = new StatisticsHandler();
statisticsHandler.setHandler(server.getHandler());
server.setHandler(statisticsHandler);
}
});
}
};
}
您需要添加对 org.eclipse.jetty:jetty-jmx
的依赖项才能访问 MBeanContainer
。
关于java - 计算 Spring MVC 容器中 Activity HTTP 请求的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36720880/