You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@camel.apache.org by LeRoy Michel <le...@googlemail.com> on 2009/06/03 15:09:04 UTC

Set timeout of an http endpoint

Hi,

I would like to set the timeout of an http connection using camel http
component.
I read the the Camel http guide (http://camel.apache.org/http.html) and I've
tried  the following but it  doesn't work:

public void process(Exchange exchange) throws Exception {

            Map<String, Object> headers = exchange.getIn().getHeaders();
            headers.put(HttpProducer.QUERY,
"httpClient.soTimeout=150&httpClient.connectionTimeout=150");
            template.sendBodyAndHeaders("http://myserver:8080", exchange,
headers);
}

I've also tried the following :

public void process(Exchange exchange) throws Exception {
            template.send("
http://myserver:8080?httpClient.soTimeout=150&httpClient.connectionTimeout=150",
exchange)
}

Can you show me how I set the timeout of the HTTP connection in Camel 1.x

Thanks
Leroy

Re: Set timeout of an http endpoint

Posted by Willem Jiang <wi...@gmail.com>.
Hi,

I merged the test to Camel 1.x branch, the test looks good.
Can you try to use the latest released Camel 1.6.1?


Willem

Claus Ibsen wrote:
> Hi
> 
> I created a unit test with the tineout.
> 
> You can check it out by this link:
> http://svn.apache.org/viewvc?view=rev&revision=781775
> 
> It uses Camel trunk however. But see if that works for your version of Camel.
> 
> 
> 
> On Thu, Jun 4, 2009 at 5:06 PM, LeRoy Michel <le...@googlemail.com> wrote:
>> Hi,
>> I confirm that the SO_TIMEOUT is the right property to set for timeout
>> connection. The code below works with http client API :
>> ---------
>> HttpClient client = new HttpClient();
>> PostMethod method = new PostMethod("http://localhost:8080/MyResource");
>> client.getParams().setParameter(HttpMethodParams.SO_TIMEOUT, 100);
>> try {
>>      StringRequestEntity entity= new StringRequestEntity("this
>> timeout works!", "text/xml; charset=UTF-8", "UTF-8");
>> method.setRequestEntity(entity);
>> // Execute the method.
>> int statusCode = client.executeMethod(method);
>>
>> } catch (Exception e) {
>> e.printStackTrace();
>> } finally {
>> // Release the connection.
>> method.releaseConnection();
>> }
>> ----------
>>
>> The same variable "soTimeout" in the Camel URI is not taken into
>> account within camel http component.
>>
>> Can you help
>>
>> Thanks
>> LeRoy
>>
>>
>>
>> On 6/4/09, Claus Ibsen <cl...@gmail.com> wrote:
>>> Hi
>>>
>>> Try getting the timeout to work directly using HTTP client API. Then
>>> you know which settings work.
>>>
>>> Then setting the same option with the Camel URI should do the same.
>>> But maybe there is a gremlin in the code.
>>>
>>>
>>>
>>> On Thu, Jun 4, 2009 at 10:11 AM, LeRoy Michel <le...@googlemail.com>
>>> wrote:
>>>> Hi,
>>>>
>>>> I've tested http request with the following URI :
>>>>
>>>> "
>>>> http://localhost:8080/myResource?httpClient.soTimeout=10&httpClient.connectionManagerTimeout=20
>>>> "
>>>>
>>>> Even if I change the value of httpClient.soTimeout and
>>>> httpClient.connectionManagerTimeout parameters, the response time of
>>>> server
>>>> doesn't change.
>>>>
>>>> Is there any other way to set the timeout of an HTTP connection?
>>>>
>>>> Thanks for help.
>>>> LeRoy
>>>>
>>>>
>>>> On Thu, Jun 4, 2009 at 4:57 AM, Willem Jiang <wi...@gmail.com>
>>>> wrote:
>>>>
>>>>> Hi,
>>>>>
>>>>> The last one which sets the httpClient's parameter in the URI should
>>>>> work.
>>>>> I checked the HttpClientParams java doc, there is no properties of
>>>>> connectionTimeout, I think you need to try to use
>>>>> connectionManagerTimeout instead of connectionTimeout.
>>>>>
>>>>> BTW, In Camel 2.0, we have the parameter validation, you will get the
>>>>> ResolveEndpointFailedException if the parameter name is wrong.
>>>>>
>>>>> Willem
>>>>>
>>>>> LeRoy Michel wrote:
>>>>>> Hi,
>>>>>>
>>>>>> I would like to set the timeout of an http connection using camel http
>>>>>> component.
>>>>>> I read the the Camel http guide (http://camel.apache.org/http.html) and
>>>>> I've
>>>>>> tried  the following but it  doesn't work:
>>>>>>
>>>>>> public void process(Exchange exchange) throws Exception {
>>>>>>
>>>>>>             Map<String, Object> headers =
>>>>>> exchange.getIn().getHeaders();
>>>>>>             headers.put(HttpProducer.QUERY,
>>>>>> "httpClient.soTimeout=150&httpClient.connectionTimeout=150");
>>>>>>             template.sendBodyAndHeaders("http://myserver:8080",
>>>>> exchange,
>>>>>> headers);
>>>>>> }
>>>>>>
>>>>>> I've also tried the following :
>>>>>>
>>>>>> public void process(Exchange exchange) throws Exception {
>>>>>>             template.send("
>>>>>>
>>>>> http://myserver:8080?httpClient.soTimeout=150&httpClient.connectionTimeout=150
>>>>> ",
>>>>>> exchange)
>>>>>> }
>>>>>>
>>>>>> Can you show me how I set the timeout of the HTTP connection in Camel
>>>>>> 1.x
>>>>>>
>>>>>> Thanks
>>>>>> Leroy
>>>>>>
>>>>>
>>>
>>>
>>> --
>>> Claus Ibsen
>>> Apache Camel Committer
>>>
>>> Open Source Integration: http://fusesource.com
>>> Blog: http://davsclaus.blogspot.com/
>>> Twitter: http://twitter.com/davsclaus
>>>
> 
> 
> 


Re: Set timeout of an http endpoint

Posted by Claus Ibsen <cl...@gmail.com>.
Hi

I created a unit test with the tineout.

You can check it out by this link:
http://svn.apache.org/viewvc?view=rev&revision=781775

It uses Camel trunk however. But see if that works for your version of Camel.



On Thu, Jun 4, 2009 at 5:06 PM, LeRoy Michel <le...@googlemail.com> wrote:
> Hi,
> I confirm that the SO_TIMEOUT is the right property to set for timeout
> connection. The code below works with http client API :
> ---------
> HttpClient client = new HttpClient();
> PostMethod method = new PostMethod("http://localhost:8080/MyResource");
> client.getParams().setParameter(HttpMethodParams.SO_TIMEOUT, 100);
> try {
>      StringRequestEntity entity= new StringRequestEntity("this
> timeout works!", "text/xml; charset=UTF-8", "UTF-8");
> method.setRequestEntity(entity);
> // Execute the method.
> int statusCode = client.executeMethod(method);
>
> } catch (Exception e) {
> e.printStackTrace();
> } finally {
> // Release the connection.
> method.releaseConnection();
> }
> ----------
>
> The same variable "soTimeout" in the Camel URI is not taken into
> account within camel http component.
>
> Can you help
>
> Thanks
> LeRoy
>
>
>
> On 6/4/09, Claus Ibsen <cl...@gmail.com> wrote:
>> Hi
>>
>> Try getting the timeout to work directly using HTTP client API. Then
>> you know which settings work.
>>
>> Then setting the same option with the Camel URI should do the same.
>> But maybe there is a gremlin in the code.
>>
>>
>>
>> On Thu, Jun 4, 2009 at 10:11 AM, LeRoy Michel <le...@googlemail.com>
>> wrote:
>>> Hi,
>>>
>>> I've tested http request with the following URI :
>>>
>>> "
>>> http://localhost:8080/myResource?httpClient.soTimeout=10&httpClient.connectionManagerTimeout=20
>>> "
>>>
>>> Even if I change the value of httpClient.soTimeout and
>>> httpClient.connectionManagerTimeout parameters, the response time of
>>> server
>>> doesn't change.
>>>
>>> Is there any other way to set the timeout of an HTTP connection?
>>>
>>> Thanks for help.
>>> LeRoy
>>>
>>>
>>> On Thu, Jun 4, 2009 at 4:57 AM, Willem Jiang <wi...@gmail.com>
>>> wrote:
>>>
>>>> Hi,
>>>>
>>>> The last one which sets the httpClient's parameter in the URI should
>>>> work.
>>>> I checked the HttpClientParams java doc, there is no properties of
>>>> connectionTimeout, I think you need to try to use
>>>> connectionManagerTimeout instead of connectionTimeout.
>>>>
>>>> BTW, In Camel 2.0, we have the parameter validation, you will get the
>>>> ResolveEndpointFailedException if the parameter name is wrong.
>>>>
>>>> Willem
>>>>
>>>> LeRoy Michel wrote:
>>>> > Hi,
>>>> >
>>>> > I would like to set the timeout of an http connection using camel http
>>>> > component.
>>>> > I read the the Camel http guide (http://camel.apache.org/http.html) and
>>>> I've
>>>> > tried  the following but it  doesn't work:
>>>> >
>>>> > public void process(Exchange exchange) throws Exception {
>>>> >
>>>> >             Map<String, Object> headers =
>>>> > exchange.getIn().getHeaders();
>>>> >             headers.put(HttpProducer.QUERY,
>>>> > "httpClient.soTimeout=150&httpClient.connectionTimeout=150");
>>>> >             template.sendBodyAndHeaders("http://myserver:8080",
>>>> exchange,
>>>> > headers);
>>>> > }
>>>> >
>>>> > I've also tried the following :
>>>> >
>>>> > public void process(Exchange exchange) throws Exception {
>>>> >             template.send("
>>>> >
>>>> http://myserver:8080?httpClient.soTimeout=150&httpClient.connectionTimeout=150
>>>> ",
>>>> > exchange)
>>>> > }
>>>> >
>>>> > Can you show me how I set the timeout of the HTTP connection in Camel
>>>> > 1.x
>>>> >
>>>> > Thanks
>>>> > Leroy
>>>> >
>>>>
>>>>
>>>
>>
>>
>>
>> --
>> Claus Ibsen
>> Apache Camel Committer
>>
>> Open Source Integration: http://fusesource.com
>> Blog: http://davsclaus.blogspot.com/
>> Twitter: http://twitter.com/davsclaus
>>
>



-- 
Claus Ibsen
Apache Camel Committer

Open Source Integration: http://fusesource.com
Blog: http://davsclaus.blogspot.com/
Twitter: http://twitter.com/davsclaus

Re: Set timeout of an http endpoint

Posted by LeRoy Michel <le...@googlemail.com>.
Hi,
I confirm that the SO_TIMEOUT is the right property to set for timeout
connection. The code below works with http client API :
---------
HttpClient client = new HttpClient();
PostMethod method = new PostMethod("http://localhost:8080/MyResource");
client.getParams().setParameter(HttpMethodParams.SO_TIMEOUT, 100);
try {
      StringRequestEntity entity= new StringRequestEntity("this
timeout works!", "text/xml; charset=UTF-8", "UTF-8");
method.setRequestEntity(entity);
// Execute the method.
int statusCode = client.executeMethod(method);

} catch (Exception e) {
e.printStackTrace();
} finally {
// Release the connection.
method.releaseConnection();
}
----------

The same variable "soTimeout" in the Camel URI is not taken into
account within camel http component.

Can you help

Thanks
LeRoy



On 6/4/09, Claus Ibsen <cl...@gmail.com> wrote:
> Hi
>
> Try getting the timeout to work directly using HTTP client API. Then
> you know which settings work.
>
> Then setting the same option with the Camel URI should do the same.
> But maybe there is a gremlin in the code.
>
>
>
> On Thu, Jun 4, 2009 at 10:11 AM, LeRoy Michel <le...@googlemail.com>
> wrote:
>> Hi,
>>
>> I've tested http request with the following URI :
>>
>> "
>> http://localhost:8080/myResource?httpClient.soTimeout=10&httpClient.connectionManagerTimeout=20
>> "
>>
>> Even if I change the value of httpClient.soTimeout and
>> httpClient.connectionManagerTimeout parameters, the response time of
>> server
>> doesn't change.
>>
>> Is there any other way to set the timeout of an HTTP connection?
>>
>> Thanks for help.
>> LeRoy
>>
>>
>> On Thu, Jun 4, 2009 at 4:57 AM, Willem Jiang <wi...@gmail.com>
>> wrote:
>>
>>> Hi,
>>>
>>> The last one which sets the httpClient's parameter in the URI should
>>> work.
>>> I checked the HttpClientParams java doc, there is no properties of
>>> connectionTimeout, I think you need to try to use
>>> connectionManagerTimeout instead of connectionTimeout.
>>>
>>> BTW, In Camel 2.0, we have the parameter validation, you will get the
>>> ResolveEndpointFailedException if the parameter name is wrong.
>>>
>>> Willem
>>>
>>> LeRoy Michel wrote:
>>> > Hi,
>>> >
>>> > I would like to set the timeout of an http connection using camel http
>>> > component.
>>> > I read the the Camel http guide (http://camel.apache.org/http.html) and
>>> I've
>>> > tried  the following but it  doesn't work:
>>> >
>>> > public void process(Exchange exchange) throws Exception {
>>> >
>>> >             Map<String, Object> headers =
>>> > exchange.getIn().getHeaders();
>>> >             headers.put(HttpProducer.QUERY,
>>> > "httpClient.soTimeout=150&httpClient.connectionTimeout=150");
>>> >             template.sendBodyAndHeaders("http://myserver:8080",
>>> exchange,
>>> > headers);
>>> > }
>>> >
>>> > I've also tried the following :
>>> >
>>> > public void process(Exchange exchange) throws Exception {
>>> >             template.send("
>>> >
>>> http://myserver:8080?httpClient.soTimeout=150&httpClient.connectionTimeout=150
>>> ",
>>> > exchange)
>>> > }
>>> >
>>> > Can you show me how I set the timeout of the HTTP connection in Camel
>>> > 1.x
>>> >
>>> > Thanks
>>> > Leroy
>>> >
>>>
>>>
>>
>
>
>
> --
> Claus Ibsen
> Apache Camel Committer
>
> Open Source Integration: http://fusesource.com
> Blog: http://davsclaus.blogspot.com/
> Twitter: http://twitter.com/davsclaus
>

Re: Set timeout of an http endpoint

Posted by Claus Ibsen <cl...@gmail.com>.
Hi

Try getting the timeout to work directly using HTTP client API. Then
you know which settings work.

Then setting the same option with the Camel URI should do the same.
But maybe there is a gremlin in the code.



On Thu, Jun 4, 2009 at 10:11 AM, LeRoy Michel <le...@googlemail.com> wrote:
> Hi,
>
> I've tested http request with the following URI :
>
> "
> http://localhost:8080/myResource?httpClient.soTimeout=10&httpClient.connectionManagerTimeout=20
> "
>
> Even if I change the value of httpClient.soTimeout and
> httpClient.connectionManagerTimeout parameters, the response time of server
> doesn't change.
>
> Is there any other way to set the timeout of an HTTP connection?
>
> Thanks for help.
> LeRoy
>
>
> On Thu, Jun 4, 2009 at 4:57 AM, Willem Jiang <wi...@gmail.com> wrote:
>
>> Hi,
>>
>> The last one which sets the httpClient's parameter in the URI should work.
>> I checked the HttpClientParams java doc, there is no properties of
>> connectionTimeout, I think you need to try to use
>> connectionManagerTimeout instead of connectionTimeout.
>>
>> BTW, In Camel 2.0, we have the parameter validation, you will get the
>> ResolveEndpointFailedException if the parameter name is wrong.
>>
>> Willem
>>
>> LeRoy Michel wrote:
>> > Hi,
>> >
>> > I would like to set the timeout of an http connection using camel http
>> > component.
>> > I read the the Camel http guide (http://camel.apache.org/http.html) and
>> I've
>> > tried  the following but it  doesn't work:
>> >
>> > public void process(Exchange exchange) throws Exception {
>> >
>> >             Map<String, Object> headers = exchange.getIn().getHeaders();
>> >             headers.put(HttpProducer.QUERY,
>> > "httpClient.soTimeout=150&httpClient.connectionTimeout=150");
>> >             template.sendBodyAndHeaders("http://myserver:8080",
>> exchange,
>> > headers);
>> > }
>> >
>> > I've also tried the following :
>> >
>> > public void process(Exchange exchange) throws Exception {
>> >             template.send("
>> >
>> http://myserver:8080?httpClient.soTimeout=150&httpClient.connectionTimeout=150
>> ",
>> > exchange)
>> > }
>> >
>> > Can you show me how I set the timeout of the HTTP connection in Camel 1.x
>> >
>> > Thanks
>> > Leroy
>> >
>>
>>
>



-- 
Claus Ibsen
Apache Camel Committer

Open Source Integration: http://fusesource.com
Blog: http://davsclaus.blogspot.com/
Twitter: http://twitter.com/davsclaus

Re: Set timeout of an http endpoint

Posted by LeRoy Michel <le...@googlemail.com>.
Hi,

I've tested http request with the following URI :

"
http://localhost:8080/myResource?httpClient.soTimeout=10&httpClient.connectionManagerTimeout=20
"

Even if I change the value of httpClient.soTimeout and
httpClient.connectionManagerTimeout parameters, the response time of server
doesn't change.

Is there any other way to set the timeout of an HTTP connection?

Thanks for help.
LeRoy


On Thu, Jun 4, 2009 at 4:57 AM, Willem Jiang <wi...@gmail.com> wrote:

> Hi,
>
> The last one which sets the httpClient's parameter in the URI should work.
> I checked the HttpClientParams java doc, there is no properties of
> connectionTimeout, I think you need to try to use
> connectionManagerTimeout instead of connectionTimeout.
>
> BTW, In Camel 2.0, we have the parameter validation, you will get the
> ResolveEndpointFailedException if the parameter name is wrong.
>
> Willem
>
> LeRoy Michel wrote:
> > Hi,
> >
> > I would like to set the timeout of an http connection using camel http
> > component.
> > I read the the Camel http guide (http://camel.apache.org/http.html) and
> I've
> > tried  the following but it  doesn't work:
> >
> > public void process(Exchange exchange) throws Exception {
> >
> >             Map<String, Object> headers = exchange.getIn().getHeaders();
> >             headers.put(HttpProducer.QUERY,
> > "httpClient.soTimeout=150&httpClient.connectionTimeout=150");
> >             template.sendBodyAndHeaders("http://myserver:8080",
> exchange,
> > headers);
> > }
> >
> > I've also tried the following :
> >
> > public void process(Exchange exchange) throws Exception {
> >             template.send("
> >
> http://myserver:8080?httpClient.soTimeout=150&httpClient.connectionTimeout=150
> ",
> > exchange)
> > }
> >
> > Can you show me how I set the timeout of the HTTP connection in Camel 1.x
> >
> > Thanks
> > Leroy
> >
>
>

Re: Set timeout of an http endpoint

Posted by Willem Jiang <wi...@gmail.com>.
Hi,

The last one which sets the httpClient's parameter in the URI should work.
I checked the HttpClientParams java doc, there is no properties of
connectionTimeout, I think you need to try to use
connectionManagerTimeout instead of connectionTimeout.

BTW, In Camel 2.0, we have the parameter validation, you will get the
ResolveEndpointFailedException if the parameter name is wrong.

Willem

LeRoy Michel wrote:
> Hi,
> 
> I would like to set the timeout of an http connection using camel http
> component.
> I read the the Camel http guide (http://camel.apache.org/http.html) and I've
> tried  the following but it  doesn't work:
> 
> public void process(Exchange exchange) throws Exception {
> 
>             Map<String, Object> headers = exchange.getIn().getHeaders();
>             headers.put(HttpProducer.QUERY,
> "httpClient.soTimeout=150&httpClient.connectionTimeout=150");
>             template.sendBodyAndHeaders("http://myserver:8080", exchange,
> headers);
> }
> 
> I've also tried the following :
> 
> public void process(Exchange exchange) throws Exception {
>             template.send("
> http://myserver:8080?httpClient.soTimeout=150&httpClient.connectionTimeout=150",
> exchange)
> }
> 
> Can you show me how I set the timeout of the HTTP connection in Camel 1.x
> 
> Thanks
> Leroy
>