我试图通过驼峰发送许多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年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)
- 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