全部,AsyncHttpClient可以执行非阻塞异步HTTP调用吗?
我想决定是否使用NodeJS或Java为我的应用程序。我将通过HTTP与CouchDB进行通信,并希望有一个异步非阻塞设计,我的应用程序线程可以处理其他请求,同时等待来自CouchDB的查询响应。
我宁愿使用Java,我一直在寻找AsyncHttpClient几天作为潜在的解决方案。但是,我在理解图书馆方面遇到了一些困难,并认为我可能对某些事情有根本性的误解。
我这里张贴一个要点:“请求X派” https://gist.github.com/conorgil/5505603
我希望这个要点打印出来和每个请求的“响应X:某事”。但是,在每个Future调用get()之前,似乎没有进行HTTP调用(因此,处理程序未执行)。取消注释第23行f.get()使代码按预期工作,但对Future#get()的调用被阻止,是否正确?有没有办法提供一个回调函数,一旦HTTP响应被完全检索而没有被阻塞就会被执行?
类似如下: 1)请求进入主线程 2)异步,对CouchDB进行非阻塞HTTP调用。注册完成处理程序以处理来自CouchDB的响应3)主线程现在可以自由处理下一个请求 4)来自CouchDB的HTTP响应到达某个点,并且调用注册的处理程序以执行某些业务逻辑 5)主线程继续处理请求(对于不需要访问CouchDB的请求,它们可以很快响应)
我是否从根本上误解了某些东西?在Java中可以做这种事情吗? AsyncHttpClient是答案吗?这个问题是相关的,但不知道自2011年以来事情是否发生了变化(Perform Async Connect with Java AsyncHttpClient Library?)
由于NodeJS运行事件循环,因此此非阻塞异步行为是标准的。你只需要注册一个回调函数来处理数据库响应,并且事件循环会在处理其他事情的时候处理。
任何和所有的建议表示赞赏。
感谢, 康纳尔
是的。看看vert.x – 2013-05-06 12:23:03
node.js作为一个轻量级的反向代理/网关,使用couchdb只需很少的应用程序逻辑,这很简单,因为沙发的http接口和节点的简单异步http插件。java对沉重的应用程序逻辑更具操作性。 – 2015-12-05 00:02:16