On Mon, Mar 9, 2009 at 9:02 AM, Henric Hedin <hhe...@gmail.com> wrote: > Hi again, > > I solved my problem by setting cacheLevelName=CACHE_NONE on the MQ JMS > Endpoint. Now the message is backed out out directly, without the route/JVM > restart. Great
We have a warning about it here: http://camel.apache.org/jms.html Maybe we should add WMQ to the list as well that could have problems as well? BTW Which versions of Camel, Spring and WMQ are you using? > > Regards, > Henric > > On Mon, Mar 9, 2009 at 8:53 AM, Henric Hedin <hhe...@gmail.com> wrote: > >> Thank you Claus, the trick to not use the Spring Policy works good enough >> for me! >> >> >> >> Though, I still get a strange behavior. I'm using WebSphere MQ as the >> incoming JMS-provider and for the input queue I have set "Backout requeue >> queue" and the Backout threshold to 1. When sending a message to the input >> queue which causes a parse exception, the message is removed from the input >> queue and I could see on the queue depth is increased for the backout-queue; >> but's its never committed (i.e. I can't see the message when browsing the >> queue). When stopping my "Route builder"-flow/JVM the message is put back on >> the input queue and the backout count equals 2. Then, when I restart the >> flow/JVM again, the message is finally put correctly to the Backout queue >> (and removed from the input-queue), without any exceptions occurring in my >> Camel Route. >> >> >> >> Could this have anything to do with the JMS (Spring) options or could it be >> related to pooling in my (WMQ) connection factory? I will probably make some >> further investigations and probably try AMQ instead to see if I get the same >> behavior. >> >> >> >> Thanks, >> >> Henric >> >> >> On Fri, Mar 6, 2009 at 5:10 PM, Claus Ibsen <claus.ib...@gmail.com> wrote: >> >>> On Fri, Mar 6, 2009 at 1:51 PM, Henric Hedin <hhe...@gmail.com> wrote: >>> > Hi, >>> > >>> > Is it possible to in some way to use the TransactionErrorHandler and at >>> the >>> > same time catch and handle exceptions? >>> > >>> > I have read the documentation under >>> > http://camel.apache.org/error-handling-in-camel.html that for >>> transactional >>> > exchanges the Error Handler does not kick, so the following code in my >>> Route >>> > configure will not work: >>> > >>> > >>> > errorHandler(bean(TransactionErrorHandlerBuilder.class, >>> > "transactionErrorHandler")); >>> > >>> > onException(SAXParseException.class). >>> > handled(true). >>> > policy(notsupported). >>> > maximumRedeliveries(1). >>> > transform().constant("Sorry, parse exception..."). >>> > to("jms:queue:validationFailed.SAXParseException"); >>> > >>> > >>> > from("jms:queue:input-queue?transacted=true"). >>> > unmarshal(jaxbDataFormat). >>> > to("jms:queue:output-queue"). >>> > >>> > >>> > What I'm trying to accomplish is if a parsing exception occurs, I would >>> like >>> > my incoming message to be rolled back and put on the jms deadletter >>> queue >>> > (configured for the queue on the JMS provider, when the >>> JMSXDeliveryCount >>> > has reached it's threshold). But I would also be able to send an >>> information >>> > jms-message to the same jms-provider with information about why the >>> message >>> > has been backed out (of course outside the "incoming transaction"). >>> > >>> > Maybe a strange solution, but is it possible to handle in Camel? :) >>> > /Henric >>> > >>> No the DeadLetterChannel is disabled for transacted exchanges. There >>> is a trick though, if you dont add the Spring Policy then it will >>> default to REQUIRED and still use DLC. >>> >>> We are considering how we can provide options for end users in the >>> future so you can use DLC for somerthing combined with transacted >>> exchanges. >>> >>> The problem with transacted exchanges is that they are redelivered in >>> a totally new thread so Camel has no wait of correlating a previous >>> attempt, we can only rely on the few JMS options you get such as the >>> JMSX counter. But we dont know when we have reached exhausted, to send >>> the extra JMS message >>> >>> But any feedback and ideas is welcome what we can do in the future to >>> bring more value to error handling with TX >>> >>> >>> >>> >>> -- >>> Claus Ibsen >>> Apache Camel Committer >>> >>> Open Source Integration: http://fusesource.com >>> Blog: http://davsclaus.blogspot.com/ >>> >> >> > -- Claus Ibsen Apache Camel Committer Open Source Integration: http://fusesource.com Blog: http://davsclaus.blogspot.com/