Thanks a lot, Hadrian and Wilem. In my case, I have to transfer data to an external consumer using HTTP/HTTPS Post. The producer works well for this case. However my requirement is to try redelivering(with exponential backoff) for any errors including 404 and 500 since it may be a case of consumer's server being down.
I am using something like this: errorHandler(deadLetterChannel("jms:redelivery-queue").initialRedeliveryDelay(20000) .backOffMultiplier(2).maximumRedeliveries(3).useExponentialBackOff()); from("jms:deliveryqueue").recipientList(header("address")).to("bean:MyBean?method=processIsOK"); in this the header address contains something like https://myconsumer/servlet/CallbackServlet Now the problem is I find that the HTTP component will not even try redelivering for 404 and 401. It acts as if it is a successful transport. I understand that I can check whether the delivery has failed or not. I found out from HTTP producer code I am even able to check the response code by looking at the http.responseCode header (Probably we should update HTTP Component doc - I can help). But how can I make Camel try redelivering these 404/401 messages? I am sorry if I am not explaining it properly. Since I am pretty new in Camel, probably I am blabbering something that is totally off mark. Thanks in advance. Hari Gangadharan Hadrian Zbarcea wrote: > > Hi, > > To add to Willem's comment, there is no point in retrying for 404 for > example, but it makes sense to retry for codes like 500. That means > that we have to enhance the camel-http component to create 2 classes > of errors and apply the error handle for some, but not for others. > This is depended on the cleanup in CAMEL-316 that will only be fully > resolved in the next release, and only partially (we hope) in 1.5. > > Thanks for riding the camel, > Hadrian > > > On Sep 26, 2008, at 4:00 AM, Willem Jiang wrote: > >> Hi , >> >> Current HTTP producer will not retry if the response is 401/404/500. >> It just put the response back in the fault message body and it will >> not trigger the default error handler[1] for retring. >> >> Your application code should call exchang.isFailed() for checking >> the fault response. >> >> For the Camel 1.5 , we are planing to cut a RC next week. I don't >> think camel-http 1.5-SNAPSHOT can work with camel-core 1.4, since >> they are some change between the core and http component in Camel 1.5. >> We are publishing the snapshot every day here[2], please take a try :) >> >> [1] http://activemq.apache.org/camel/error-handler.html >> [2] http://people.apache.org/repo/m2-snapshot-repository >> >> Willem >> >> harinair wrote: >>> Willem: >>> >>> Thanks a lot for the quick reply. So you mean to say that the latest >>> SNAPSHOT will mark response != 200 as failed - right? I guess, that >>> also >>> means there will be retries by HTTP producer for 500 / 401/ 404 etc. >>> >>> If that is the case then it is great. When is the 1.5 release >>> planned? I am >>> planning to go live this week for a small project and I uncovered >>> this bug >>> on a test. Is 1.5 fairly stable? Or is it recommended that I use >>> just the >>> camel-http component from the 1.5-SNAPSHOT? >>> >>> Regards, >>> Hari Gangadharan >>> >>> >>> willem.jiang wrote: >>> >>>> I just did a fixe on CAMEL-807[1] which relates your issue. >>>> Now we will put the response into the fault message if the >>>> response is not 200. >>>> You can know it when you call the exchange.isfailed(). >>>> >>>> Please check out the latest snapshot and feel free to add your >>>> feed back. >>>> >>>> [1]https://issues.apache.org/activemq/browse/CAMEL-807 >>>> >>>> Willem >>>> >>>> >>>> >>> >>> >> > > > -- View this message in context: http://www.nabble.com/Camel-HTTP-producer-successful-on-404--tp19681729s22882p19691837.html Sent from the Camel - Users mailing list archive at Nabble.com.