背景
我正在试验Spring Webflux,用于React式应用程序,我想看看应用程序中只有一个线程时的应用程序行为。
问题
我怎样才能让Spring只使用一个线程来处理所有可能到来的请求呢?
到目前为止,我设置了server.tomcat.max-threads=1
,但是我仍然看到每个请求创建了多个线程。您可以看到下面运行应用程序的一些日志:
请让我知道,如果我错过了一些我应该添加到我的配置,使这项工作。
谢谢你的帮忙!
我正在试验Spring Webflux,用于React式应用程序,我想看看应用程序中只有一个线程时的应用程序行为。
我怎样才能让Spring只使用一个线程来处理所有可能到来的请求呢?
到目前为止,我设置了server.tomcat.max-threads=1
,但是我仍然看到每个请求创建了多个线程。您可以看到下面运行应用程序的一些日志:
请让我知道,如果我错过了一些我应该添加到我的配置,使这项工作。
谢谢你的帮忙!
1条答案
按热度按时间e3bfsja21#
默认情况下,WebFlux与Tomcat没有任何关系(不过,您可以将WebFlux配置为使用Tomcat/Undertow/Jetty而不是Netty)。
在WebFlux中,所有Web请求都由事件循环处理,内部使用React式Netty来处理Web请求。
用于处理Web请求的线程具有如下名称:
React器-HTT-NiO-4
如果你想配置事件循环使用的线程数,你可以在应用程序启动前通过一个VM参数来完成:
例如,它看起来像这样:
另外:您在日志中看到的
parallel-n
线程是来自并行调度程序的线程,与Flux.interval()
方法一起使用。这些线程与服务Web请求的事件循环无关