Apache Camel (premier volet) : configuration des timeouts HTTP Apache Camel : configuration globale des temporisations HTTP

Pour la configuration des temporisations HTTP, un petit tour dans la documentation, montre qu'il existe (au moins) deux solutions :

 Soit, on passe en paramètre la valeur du délai sur la route. Dans ce cas, la route précédente devient :


 from("direct:start").

to("http://www.google.com/search?q=netapsys&httpClient.soTimeout=5000").to("mock:result");


 Soit, on configure le composant directement en injectant un objet ClientConnectionManager correctement paramétré. Si, comme c'est mon cas, vous utilisez Spring comme registre Camel, il suffit de déclarer un bean correspondant au composant et de le paramétrer. Par analogie avec :

final MultiThreadedHttpConnectionManager connectionManager = new MultiThreadedHttpConnectionManager();
final HttpConnectionManagerParams params = connectionManager.getParams();
params.setConnectionTimeout(6000);
connectionManager.setParams(params);
HttpClient client = new HttpClient(connectionManager));


Cela revient dans un contexte Spring, aux déclarations :

<bean id="http.connection.manager.params"
   class="org.apache.commons.httpclient.params.HttpConnectionManagerParams">
   <property name="connectionTimeout" value="6000" />
   <property name="soTimeout" value="4000" />
</bean>

<bean id="http.composant" class="org.apache.camel.component.http.HttpComponent">
   <property name="httpConnectionManager">
   <bean
      class="org.apache.commons.httpclient.MultiThreadedHttpConnectionManager">
      <property name="params" ref="http.connection.manager.params" />
   </bean>
   </property>
</bean>