我有一个骆驼上下文与几条路线,简化版本看起来像:骆驼:传出连接限制为HTTP组件
<camelContext id="myContext">
<threadPoolProfile id="defaultThreadPoolProfile" defaultProfile="true"
poolSize="50" maxPoolSize="500" maxQueueSize="5000" rejectedPolicy="CallerRuns" />
<route id="rest">
<from uri="jetty:http://0.0.0.0:8080/service?httpClient.idleTimeout=30000&httpClient.soTimeout=30000&httpClient.defaultMaxConnectionsPerHost=150&httpClient.maxTotalConnections=1000" />
<to uri="direct:service" />
</route>
<route id="service">
<from uri="direct:service" />
<to uri="direct:external" />
<to uri="direct:response" />
</route>
<route id="external">
<from uri="direct:external" />
<to uri="http4://remote-host/?bridgeEndpoint=true&httpClient.soTimeout=15000&connectionsPerRoute=100&maxTotalConnections=1000" />
<convertBodyTo type="java.lang.String" />
</route>
<route id="response">
<from uri="direct:response" />
<to uri="xslt:response.xsl" />
</route>
</camelContext>
在负载测试我注意到,即传出连接(经由http4成分)以某种方式限制。试图调整相关的组件选项(如上例所示)似乎没有帮助。我尝试了下面的场景:
当时用jMeter发送50个并行请求,并监控camel正在运行的主机上的传入已建立的套接字连接:我发现在任何时候都有50个与骆驼建立连接(迄今为止这么好)。同时,我在骆驼主机和远程主机端的传入连接上也只能看到20个建立的传出连接。
对我来说,似乎骆驼限制传出连接的数量?如何解决这个问题?我希望所有请求都能通过而不会受到任何限制。使用骆驼2.10
谢谢!不幸的是,我无法快速找到哪个Apache HTTP Client 4.x设置能够做到这一点(尽管知道它仍然很有趣),但是使用jetty组件来解决问题! – Laimoncijus