首页 文章

Java Spring Framework:多线程和TaskExecutor

提问于
浏览
2

设置:Apache Tomcat 8 Web服务器/ Java Spring Framework / MVC

背景:我有多台服务器连接了负载均衡器 . 每次负载均衡器将请求转发到Web服务器时,服务器都会将请求推送到远程队列 .

现在,我正在尝试在我的Web应用程序上设置多个线程,以便这些线程可用于处理远程队列上的请求(从队列中检索它们然后开始处理它们) .

过去,我只在一个服务器实例上工作 . 服务器将直接从Controller中的前端接收请求,然后它将生成多个线程以并行处理这些请求 . 一旦收到第一个请求(请求进入 - >创建线程 - >处理请求),就会触发所有调用(线程池创建和其他) .

问题:现在,我不想在请求进入后创建线程,而是在Web应用程序开始运行时创建线程,以便它可以立即开始从远程队列中提取请求 . 简单地说,我想将线程创建与请求处理分离 . 理想情况下,我希望这些线程(固定数量的线程)始终在运行,在空闲时从队列中提取请求 . 在Controller中,当服务器收到请求时,我只是将它发送到队列中 .

这是我第一次使用Spring框架,所以我不确定什么是做我需要的最好的方法 . Controller(处理传入请求的方法)是我所知道的唯一程序入口点 . 因此,我不知道在应用程序启动时如何以及在何处创建这些线程 . 我希望线程非常健壮,因为它们会对请求进行一些繁重的处理 .

以下是我提出的一些想法: - 我正在考虑使用TaskExecutor来创建加载上下文时所需的线程(不确定这是一个好的和强大的方法) . 如果我使用TaskExecutor,我应该如何管理这些线程和其他资源的生命周期? - 在我的研究期间,我也来到了WorkManager . 我不确定它是否符合我的需要 .

任何建议和指示表示赞赏!

1 回答

  • 0

    我不认为你自己需要担心线程 . Spring对producing and consuming message queues有很多支持 . 只需连接一个消息监听器,我认为应该开始使用这些消息 .

相关问题