所以,我有route
基本上看起来像这样 -
from("direct:send_success")
.to("http4://localhost:8089/mock/success?httpClient.socketTimeout=1000");
使用这种方式,我能够成功应用1秒的套接字超时。我正在使用ProducerTemplate
来调用此路由。这一切都很好。但是当我改变路线时 -
from("direct:send_success")
.to("http4://localhost:8089/mock/success");
并将路由调用到 -
ProducerTemplate pt = ctx.createProducerTemplate();
Exchange ex = pt.send("direct:send_success", exOb -> {
HttpComponent httpComp = exOb.getContext().getComponent("http4", HttpComponent.class);
exOb.getContext().getComponent("http4", HttpComponent.class).setHttpClientConfigurer(httpClientBuilder -> {
HttpClientBuilder
.create()
.setDefaultRequestConfig(requestConfigWithTimeout(1000))
.build();
});
});
方法requestConfigWithTimeout()
为 -
private static RequestConfig requestConfigWithTimeout(int timeoutInMilliseconds) {
return RequestConfig.copy(RequestConfig.DEFAULT)
.setSocketTimeout(timeoutInMilliseconds)
.build();
}
未应用超时设置。我哪里错了?
答案 0 :(得分:2)
在创建并启动Camel路由后,您无法更改http组件。然后使用http4组件创建路径,该组件未使用额外代码更改其配置。
因此,请先配置http4组件,而不要在发送消息时配置。