REST客户端多线程应用程序

时间:2014-09-17 18:12:38

标签: java multithreading rest soap

我正在开发一个Java应用程序,它在一端获取具有1到50个唯一ID的SOAP请求。我使用请求中的唯一ID来进行REST调用并处理响应并将处理后的数据作为soap响应发回。如果我获得所有50个唯一ID,性能将受到影响,因为我按顺序调用REST服务50次。 我的问题是,

  1. 如果我将我的应用程序设置为多线程,生成新线程以进行REST调用,当我获得更多的唯一ID时,我将获得性能优势。
  2. 如果是这样,我应该如何设计多线程,使用多个线程只进行休息调用,或者在多个线程中处理REST响应数据,并在处理完数据后合并数据。
  3. 我搜索了Apache rest客户端的多线程实现,但找不到。任何人都可以指出我正确的方向。
  4. 我正在使用Apache Http客户端。

    先谢谢

1 个答案:

答案 0 :(得分:0)

  1. 它最有可能值得做。假设您获得了多个并发SOAP请求,您的吞吐量将无法提高,但您的延迟将会延长。
  2. 您可能希望拥有一个线程池,因此您可以控制同时执行的线程/ REST调用次数。创建ThreadPoolExecutor(您可以使用Executors.newFixedThreadPoolExecutors.newCachedThreadPool);创建一个Callable任务来构造/处理每个REST调用,然后使用任务列表调用ThreadPoolExecutor.invokeAll()。然后,迭代返回的列表并从中构造SOAP响应。
  3. 有关使用具有多个线程的Apache HTTP Client,请参阅prior discussions