【发布时间】:2011-08-02 12:35:35
【问题描述】:
我正在编写一个使用多个 Web API 的 Web 应用程序。 对于单个用户的单个请求,我的应用程序可能需要对其他站点执行多达 30 个 HTTP 请求。包含 Web 应用程序的站点可以有数百个并发用户。
我一直在四处寻找我应该使用哪个库。我正在寻找一个成熟的项目,该项目具有详细的文档和经过测试的代码,并且在未来几年内仍将存在。不确定是否存在类似的东西(!)
几个问题:
在上述情况下,我应该使用异步 HTTP 客户端(无线程)还是常规(可能是池化)HTTP 客户端(有线程)?异步性使我的应用程序不再使用线程,但使代码更加分散——上面提到的请求数量会给我的服务器带来太多负担吗? (它说here 异步更具可扩展性)
哪个库是常用的?是 Apache HttpComponenets HttpClient 还是它的 asynch couterpart HttpAsynchClient - 在 Alpha 中...)? jfarcand 的AsyncHttpClient 怎么样?
好的,假设我将使用线程。 在四处挖掘之后,我意识到从 servlet 中生成线程(在我的例子中 - 一个 Struts 动作)可能是一个很大的 No No :
相关问题:
What is recommended way for spawning threads from a servlet in Tomcat
Need help with java web app design to perform background tasks
Can i spawn a thread from a servlet ?
在我看来,这些是我的选择:
- use my own thread pool(容器不管理我的线程)
- use a WorkManager such as CommonJ(好像是非活动产品)
- use a 3rd party scheduler such as Quartz(可能有点矫枉过正......?)
我将不胜感激针对此特定用例的任何建议 - 聚合来自不同 Web 服务的 lota 数据(此聚合由单个用户的单个请求调用)。
【问题讨论】:
标签: java multithreading asynchronous httpclient server-side