apache-camel - Camel 中的 Http 连接池

标签 apache-camel

我使用 Camel 作为编排引擎。

clients sends HTTP request <-> CAMEL code <---- HTTP Req----- > external
server(s)

我正在使用 HTTP4 组件(具有默认设置)进行 HTTP 请求
到外部服务器。我有很多 http 后端。

现在我们对后端进行 http 调用的方式如下:-
// The producer is created during app initialisation. This is actually done
via blueprint.xml
ProducerTemplate producer = camelContext.createProducerTemplate();

// Whenever I need to make a http call I am executing the below code with
URL set as something like:- "http4://order-api:8099/orders/v1/ordersearch/"

Exchange exchange = producer.request(URL, new Processor() {
        @Override
        public void process(Exchange exchange) throws Exception {
        log.info("Executing the HTTP request : URL - " + URL + " Headers -
" + headers + " Body : " + body);
        exchange.getIn().setHeaders(headers);
        exchange.getIn().setBody(body);
        }
    });

我遇到的问题是:-
  • 默认设置camel中的HTTP4是否使用了一些http连接
    在调用外部服务器时池化?
  • 如果是有没有办法配置连接池blueprint.xml ?

  • 我正在使用 Camel 2.16.1 并且应用程序部署在 Karaf 3.0.5 中。

    最佳答案

    http4 组件使用 Apache HttpClient,它支持使用 HttpClientConnectionManager 进行池化。

    默认情况下,camel 使用 PoolingHttpClientConnectionManager 配置了属性 connectionsPerRoutemaxTotalConnections

    如果你想对这个 clientConnectionManager 有更多的控制,你可以提供你自己的 org.apache.http.conn.HttpClientConnectionManager 实现

    HttpClient connection manager

    关于apache-camel - Camel 中的 Http 连接池,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35960470/

    相关文章:

    java - 使用 apache Camel 向远程 Web 服务发送 SOAP 请求并获取响应

    java - 如果目标相同则跳过文件复制

    apache-kafka - 无法使用kafka中的旧消息

    java - Camel 是否对文件使用隐式读锁?

    java - 以编程方式从 Camel 上下文访问 Camel 属性

    java - 集成 Apache Camel CXF-RS + CXF Jax-RS OAuth

    apache-camel - 如何使用异步子路由连接 Apache Camel 同步请求/回复端点

    java - 没有 maven 的 Apache Camel

    java - JMS 队列轮询示例

    java - 使用camel文件组件从unix服务器监视Windows网络上的文件夹