如何将asyncHttpClient与commonj workmanager集成?

时间:2012-06-19 12:35:01

标签: websphere commonj

我们有一个用例,来自最终用户的单个请求将触发对其他远程系统的1个或多个http请求。来自远程系统的所有响应将聚合到最终用户的单个响应中。我们通过在websphere中使用commonj workmanager来实现这一点。

现在,我们希望使用asyncHttpClient,以便为较多的并发http调用提供较少的线程。

所以我的问题是:

如何将asyncHttpClient与commonj workmanager集成?我们必须使用commonj作为线程池,因为它是在wehsphere中拥有托管线程的唯一方法。

请告知。

1 个答案:

答案 0 :(得分:1)

您需要做的就是创建一个利用工作管理器的新ExecutorService,如下所示。 More details...

  1. 查找WorkManager并构建WASThreadFactory

    InitialContext ctx = new InitialContext(); WorkManager wm =(WorkManager)ctx.lookup(“java:comp / env / wm / default”); ThreadFactory tf = new WASThreadFactory(wm);

  2. 使用有界缓冲区创建ThreadPoolExecutor

    BlockingQueue q = new ArrayBlockingQueue(50); ExecutorService myOwnThreadPool = = new ThreadPoolExecutor(     1,10,5000,TimeUnit.MILLISECONDS,q,tf);

  3. 根据他们的documentation,您可以指定要使用的ExecutorService

    Builder builder = new AsyncHttpClientConfig.Builder(); builder.setExecutorService(myOwnThreadPool); AsyncHttpClient client = new AsyncHttpClient(builder.build());

  4. 注意:未验证编译。不过我在之前的项目中使用了这个。