我正在编写一个使用多个 Web API 的 Web 应用程序。
对于单个用户的单个请求,我的应用程序可能需要对其他站点执行最多 30 个 HTTP 请求。包含网络应用程序的网站可以拥有数百个并发用户。
我一直在四处寻找,试图找出应该使用哪个库。我正在寻找一个成熟的项目,它具有详细的文档和经过测试的代码,并且在未来几年内仍然存在。不确定是否存在类似的东西(!)
有几个问题:
在如上所述的情况下,我应该使用异步 HTTP 客户端(不带线程)还是常规(可能是池化)HTTP 客户端(带线程)?异步性使我的应用程序不再需要使用线程,但使代码更加分散 - 上述请求数量是否会对我的服务器造成太大负担? (它说here http://hc.apache.org/index.html异步更具可扩展性)
哪个库是常用的?是吗Apache HttpComponenets HttpClient http://hc.apache.org/httpcomponents-client-ga/index.html或其异步对应物Http异步客户端 http://hc.apache.org/httpcomponents-asyncclient-dev/index.html- 这是在阿尔法...)? jfarcand 怎么样异步Http客户端 http://jfarcand.wordpress.com/2010/12/21/going-asynchronous-using-asynchttpclient-the-basic/?
好吧,假设我将使用线程。
经过深入研究后,我意识到从 servlet 中生成线程(在我的例子中是一个 Struts 操作)可能是一个很大的任务No No :
相关问题:
在 Tomcat 中从 servlet 生成线程的推荐方法是什么 https://stackoverflow.com/questions/3745905/what-is-recommended-way-for-spawning-threads-from-a-servlet-in-tomcat
需要 Java Web 应用程序设计方面的帮助来执行后台任务 https://stackoverflow.com/questions/4424329/need-help-with-java-web-app-design-to-perform-background-tasks
我可以从 servlet 生成线程吗? https://stackoverflow.com/questions/4836408/can-i-spawn-a-thread-from-a-servlet
在我看来,这些是我的选择:
-
使用我自己的线程池 https://stackoverflow.com/questions/3745905/what-is-recommended-way-for-spawning-threads-from-a-servlet-in-tomcat/3746052#3746052(容器不管理我的线程)
-
使用 WorkManager,例如 CommonJ https://stackoverflow.com/questions/3745905/what-is-recommended-way-for-spawning-threads-from-a-servlet-in-tomcat/3746173#3746173(似乎是非活跃产品)
-
使用第三方调度程序,例如 Quartz https://stackoverflow.com/questions/3745905/what-is-recommended-way-for-spawning-threads-from-a-servlet-in-tomcat/3746086#3746086(可能有点矫枉过正了……?)
我非常感谢针对此特定用例的任何建议 - 聚合来自不同 Web 服务的大量数据(此聚合由单个用户的单个请求调用)。
好问题。我会首先尝试异步解决方案,看看一切是如何工作的。异步解决方案是最容易实现的。
如果这不起作用,请尝试更多线程的模型。
我会使用 HttpClient 来发出您的请求。我经常使用它并将其用于我必须做的任何 http 工作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)