我需要用 Java 开发一个客户端 Rest API,它使用一个带有异步 http 的库。更具体地说,我可以进行 Rest CRUD 操作,返回 http 响应的 Future。我的问题是,我的包装 API 应该如何处理这些 Future 对象?我应该只为 API 的用户提供 Future 并由他来处理它,还是应该开发一些线程机制?
问问题
1725 次
2 回答
2
恕我直言,如果我是您的 API 的使用者,我宁愿您不要执行我的多线程处理,除非:
- 你有自己的使用 NIO 或其他东西(又名 Netty/Grizzle)(例如https://github.com/sonatype/async-http-client)的高度优化的事件 IO 循环。
- 有一种方法可以插入我自己的ExecutorService
我的意思是我不认为你会通过返回 Future 来增加任何价值,事实上如果我想自己处理线程很烦人,但你提供的只是异步 API(返回Future
)。
现在使您的 API 客户端Threadsafe是首选并且我确实感兴趣(也就是说,我不想每次使用它时都必须实例化一个新客户端)。
但是,如果您使用的是async-http-client (NIO)之类的东西,那么该死的返回Future
.
于 2012-08-24T14:01:22.587 回答
0
为什么需要它?- 我觉得将它作为高负载系统的未来很重要。
- 作为一个 API,拥有这样的功能会很有帮助,因为你不知道消费者是谁。
对于一个网站来说,如果它需要支持高负载,那么仅仅等待http响应将是浪费cpu时间。而是让它异步,使 http worker 更有效地处理其他请求。
使用可以为您简化此操作的库。
于 2014-06-18T09:36:14.620 回答