Java Spring 框架:多线程和任务执行器
Java Spring Framework: Multiple Threads and TaskExecutor
设置:Apache Tomcat 8 Web Server/Java Spring Framework/MVC
背景:我有多台服务器连接了一个负载均衡器。每次负载平衡器将请求转发到 Web 服务器时,服务器都会将请求推送到远程队列。
现在,我正在尝试在我的 Web 应用程序上设置多个线程,以便可以使用这些线程来处理远程队列上的请求(从队列中检索它们,然后开始处理它们)。
过去,我只处理单个服务器实例。服务器直接在Controller中接收前端的请求,然后生成多个线程并行处理这些请求。一旦收到第一个请求(请求进入 --> 创建线程 --> 处理请求),所有调用(线程池创建和其他调用)都会被触发。
问题:现在,我不想在请求进入后创建线程,而是想在 Web 应用程序启动后创建线程 运行,以便它可以立即开始从远程队列中提取请求。简而言之,我想将线程创建与请求处理分离。理想情况下,我希望一直有这些线程(固定数量)运行,只要它们空闲就从队列中拉取请求。在 Controller 中,只要服务器收到请求,我就将其发送到队列中。
这是我第一次使用 Spring 框架,所以我不确定什么是完成我需要的最佳方法。控制器(处理传入请求的方法)是我所知道的唯一程序入口点。因此,我不知道如何以及在何处可以在应用程序启动时创建这些线程。我希望线程非常健壮,因为它们将对请求进行一些繁重的处理。
以下是我的一些想法:
- 我正在考虑使用 TaskExecutor 创建我在加载上下文时需要的线程(不确定这是否是一种好的和稳健的方法)。如果我使用TaskExecutor,我应该如何管理这些线程和其他资源的生命周期?
- 在我的研究过程中,我也遇到了 WorkManager。我不确定它是否满足我的需要。
如有任何建议和指点,我们将不胜感激!
我认为您不需要自己担心线程。 Spring 对 producing and consuming message queues 有很多支持。只需连接一个消息侦听器,我认为它应该开始使用这些消息。
设置:Apache Tomcat 8 Web Server/Java Spring Framework/MVC
背景:我有多台服务器连接了一个负载均衡器。每次负载平衡器将请求转发到 Web 服务器时,服务器都会将请求推送到远程队列。
现在,我正在尝试在我的 Web 应用程序上设置多个线程,以便可以使用这些线程来处理远程队列上的请求(从队列中检索它们,然后开始处理它们)。
过去,我只处理单个服务器实例。服务器直接在Controller中接收前端的请求,然后生成多个线程并行处理这些请求。一旦收到第一个请求(请求进入 --> 创建线程 --> 处理请求),所有调用(线程池创建和其他调用)都会被触发。
问题:现在,我不想在请求进入后创建线程,而是想在 Web 应用程序启动后创建线程 运行,以便它可以立即开始从远程队列中提取请求。简而言之,我想将线程创建与请求处理分离。理想情况下,我希望一直有这些线程(固定数量)运行,只要它们空闲就从队列中拉取请求。在 Controller 中,只要服务器收到请求,我就将其发送到队列中。
这是我第一次使用 Spring 框架,所以我不确定什么是完成我需要的最佳方法。控制器(处理传入请求的方法)是我所知道的唯一程序入口点。因此,我不知道如何以及在何处可以在应用程序启动时创建这些线程。我希望线程非常健壮,因为它们将对请求进行一些繁重的处理。
以下是我的一些想法: - 我正在考虑使用 TaskExecutor 创建我在加载上下文时需要的线程(不确定这是否是一种好的和稳健的方法)。如果我使用TaskExecutor,我应该如何管理这些线程和其他资源的生命周期? - 在我的研究过程中,我也遇到了 WorkManager。我不确定它是否满足我的需要。
如有任何建议和指点,我们将不胜感激!
我认为您不需要自己担心线程。 Spring 对 producing and consuming message queues 有很多支持。只需连接一个消息侦听器,我认为它应该开始使用这些消息。