camel-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Claus Ibsen <claus.ib...@gmail.com>
Subject Re: response code in http component
Date Thu, 02 Apr 2009 14:48:44 GMT
Hi Peter

I have created a more simple example
http://svn.apache.org/viewvc?view=rev&revision=761307

And the wiki page has been updated as well
http://cwiki.apache.org/confluence/display/CAMEL/HTTP

On Thu, Apr 2, 2009 at 4:02 PM, Claus Ibsen <claus.ibsen@gmail.com> wrote:
> Hi Peter
>
> I have create an unit test to demonstrate this
> http://svn.apache.org/viewvc?view=rev&revision=761300
>
> However I also think it was a bit cumbersome to do it nicely, so I
> have logged a RFE:
> https://issues.apache.org/activemq/browse/CAMEL-1512
>
> So we can let the http producer return any response in the exchange
> instead of throwing exceptions for failed error codes.
>
>
> On Thu, Apr 2, 2009 at 3:16 PM, Peter Maas <pfmmaas@gmail.com> wrote:
>> I've tried to implement your solution, but failed to do so correctly. No
>> matter where I put the error handler, the route stops processing after
>> receiving a 404. Could anyone give me an example on how to act on a http 404
>> response?
>>
>>
>> On Mar 30, 2009, at 16:48 , Claus Ibsen wrote:
>>
>>> Hi
>>>
>>>
>>>
>>> On Mon, Mar 30, 2009 at 4:33 PM, Peter Maas <pfmmaas@gmail.com> wrote:
>>>>
>>>> Hi,
>>>>
>>>> according to the documentation of the HTTP component it should be
>>>> possible
>>>> to retrieve the response code if the call fails. I fail to grasp how to
>>>> exactly use this.  I wanted to use the enrich pattern to call an external
>>>> http based service to enrich the current message:
>>>>
>>>>               from("file:src/data")
>>>>                       .setHeader("id",
>>>> vpro.xpath("//vpro:schedule/@channel", String.class))
>>>>                       .enrich("direct:couchdb", new
>>>> AggregationStrategy(){
>>>>                               public Exchange aggregate(Exchange
>>>> original,
>>>> Exchange resource) {
>>>>                                       Message responseOut
=
>>>> resource.getOut();
>>>>                                       int responseCode
=
>>>> responseOut.getHeader(HttpConstants.HTTP_RESPONSE_CODE, Integer.class);
>>>>                                       System.out.println(responseCode
+ "
>>>> "
>>>> + responseOut.getBody(String.class));
>>>>                                       return original;
>>>>                               }
>>>>                       }
>>>>                       )
>>>>                       .to("...")
>>>>
>>>>
>>>> and in the resource route:
>>>>
>>>>               from("direct:couchdb")
>>>>                       .setBody(constant(""))
>>>>                       .setHeader("CamelHttpMethod", constant("GET"))
>>>>                       .setHeader(HttpConstants.HTTP_URI,
>>>> constant(LOCAL_DB).append(header("id")))
>>>>                       .to("http://couchdb");
>>>>
>>>> The executed HTTP GET arrives at the server as I expected, since it
>>>> doesn't
>>>> know the resource it returns a 404. The 404 is thrown as a
>>>> HttpOperationFailedException which triggers a retry...
>>>>
>>>> I'm probably missing something vital, but would really like a push in the
>>>> right direction here!
>>>
>>> Ah since you use a sub route before doing the actual HTTP invocation
>>> you should disable the error handler to avoid it doing a retry
>>> from("direct:crouchdb").errorHandler(noErrorHandler())....
>>>
>>> In fact you can configure it as a global to avoid the default error
>>> handler all together.
>>>
>>> Its up for debate in Camel 2.0 how the defaults for error handling should
>>> be.
>>>
>>> We will later start a separate thread for this as a open discussion.
>>> But we would definitly value the community feedback on this one.
>>>
>>>
>>>>
>>>> thanks in advance,
>>>>
>>>> Peter
>>>
>>>
>>>
>>> --
>>> 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
> Apache Camel Reference Card:
> http://refcardz.dzone.com/refcardz/enterprise-integration
>



-- 
Claus Ibsen
Apache Camel Committer

Open Source Integration: http://fusesource.com
Blog: http://davsclaus.blogspot.com/
Twitter: http://twitter.com/davsclaus
Apache Camel Reference Card:
http://refcardz.dzone.com/refcardz/enterprise-integration

Mime
View raw message