Apache Camel发送多个REST请求而不会超时

时间:2017-06-07 06:08:15

标签: timeout apache-camel restlet

我试图通过驼峰发送许多REST请求。我期待一个顺序 处理但是在11次请求之后测试停止并且它开始产生超时。

是否真的有必要配置描述here的restlet线程池设置?为什么处理在一些请求后停止?我不想要并行......

提前谢谢

@RunWith(CamelSpringJUnit4ClassRunner.class) @ContextConfiguration(classes = {MultipleRestRequestsTest.ContextConfig.class},loader = CamelSpringDelegatingTestContextLoader.class) public class MultipleRestRequestsTest扩展AbstractJUnit4SpringContextTests {

@EndpointInject(uri = "mock:result")
protected MockEndpoint resultEndpoint;

@Produce(uri = "direct:start")
protected ProducerTemplate template;

@Test
public void testMultipleRequests() throws Exception {
    for (int i = 1; i <= 1000; i++) {
        template.sendBody(i);

    }

    resultEndpoint.setExpectedCount(1000);
    resultEndpoint.assertIsNotSatisfied(50000);
}

@Configuration
public static class ContextConfig extends SingleRouteCamelConfiguration {
    @Bean(name={"restlet"})
    public RestletComponent restlet() {
        RestletComponent restlet = new RestletComponent();
        restlet.setMaxThreads(100);
        restlet.setThreadMaxIdleTimeMs(10000);
        restlet.setMaxQueued(20);
        return restlet;
    }

    @Bean
    public RouteBuilder route() {
        return new RouteBuilder() {
            public void configure() {
                from("direct:start")
                        .log("Request ${body}")
                        .to("restlet://http://localhost:8080/mock-service")
                        .to("mock:result");
            }
        };
    }
}

}

  

信息:启动Apache HTTP客户端2017-06-07 08:06:27,761   INFO SpringCamelContext:2835 - Apache Camel 2.17.0(CamelContext:   骆驼-1)开始于0.440秒

  • 2017-06-07 08:06:27,784   INFO route1:159 - Request 1
  • 2017-06-07 08:06:27,926 INFO   路线1:159 - 请求2
  • 2017-06-07 08:06:27,931 INFO   路线1:159 - 请求3
  • 2017-06-07 08:06:27,935 INFO   路线1:159 - 请求4
  • 2017-06-07 08:06:27,940 INFO   路线1:159 - 请求5
  • 2017-06-07 08:06:27,944 INFO   路线1:159 - 请求6
  • 2017-06-07 08:06:27,949 INFO   路线1:159 - 请求7
  • 2017-06-07 08:06:27,953 INFO   路线1:159 - 请求8
  • 2017-06-07 08:06:27,958 INFO   路线1:159 - 请求9
  • 2017-06-07 08:06:27,962 INFO   路线1:159 - 请求10
  • 2017-06-07 08:06:27,967 INFO   路线1:159 - 请求11
2017年6月7日上午8:06:57   org.restlet.ext.httpclient.internal.HttpMethodCall sendRequest   WARNUNG:与遥控器通信时发生错误   HTTP服务器。 org.apache.http.conn.ConnectionPoolTimeoutException:   超时等待来自游泳池的连接   org.apache.http.impl.conn.tsccm.ConnPoolByRoute.getEntryBlocking(ConnPoolByRoute.java:412)     在   org.apache.http.impl.conn.tsccm.ConnPoolByRoute $ 1.getPoolEntry(ConnPoolByRoute.java:298)     在   org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager $ 1.getConnection(ThreadSafeClientConnManager.java:238)     在   org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:422)     在   org.apache.http.impl.client.AbstractHttpClient.doExecute(AbstractHttpClient.java:863)     在   org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82)     在   org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:106)     在   org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:57)     在   org.restlet.ext.httpclient.internal.HttpMethodCall.sendRequest(HttpMethodCall.java:339)     在   org.restlet.ext.httpclient.internal.HttpMethodCall.sendRequest(HttpMethodCall.java:363)     在   org.restlet.engine.adapter.ClientAdapter.commit(ClientAdapter.java:81)     在   org.restlet.engine.adapter.HttpClientHelper.handle(HttpClientHelper.java:119)     在org.restlet.Client.handle(Client.java:153)at   org.restlet.Restlet.handle(Restlet.java:342)at   org.restlet.Restlet.handle(Restlet.java:355)

0 个答案:

没有答案