I’m having trouble getting the exception behavior I’m looking for. What I expected this to do is when any exception is thrown it will cause this route to fail and not do any retries as the docs say that no onException retries is the default.
However instead it retries forever as long as the handled constant is false. Only when I set that to true do I get the expected behavior but I don’t want to do that because then our Camel JMX tool that monitors all routes will report this as a success which is exactly wrong. I tried added a redeliveryPolicy where maximumRedeliveries=0 and that does not help. Specifically the source of the exception that is being thrown is in each of the unmarshal beans, e.g. tarGz, tar, etc. <route id="from_OD" autoStartup="{{gp.camel.OD.from.isConfigured}}" <from uri="sftp://{{gp.camel.OD.from.username}}@ {{gp.camel.OD.from.host}}:{{gp.camel.OD.from.port}}?password={{gp.camel.OD.from.password}}&delete=true&exclusiveReadLockStrategy=#nonBlockingSftpReadLockStrategy&readLockCheckInterval=10000&readLockTimeout=3600000&reconnectDelay=10000&delay=10000"/> <convertBodyTo type="byte[]"/> <choice> <when id="tarGz"> <simple>${file:name} regex '.*\.tgz'</simple> <unmarshal ref="tarGz"/> <split> <simple>${header.CamelGroupedExchange}</simple> <bean ref="routeManager" method="route(*)"/> </split> </when> <when id="tar.gz"> <simple>${file:name} regex '.*\.tar\.gz'</simple> <unmarshal ref="tarGz"/> <split> <simple>${header.CamelGroupedExchange}</simple> <bean ref="routeManager" method="route(*)"/> </split> </when> <when id="tar"> <simple>${file:name} regex '.*\.tar'</simple> <unmarshal ref="tar"/> <split> <simple>${header.CamelGroupedExchange}</simple> <bean ref="routeManager" method="route(*)"/> </split> </when> <when id="gz"> <simple>${file:name} regex '.*\.gz'</simple> <unmarshal ref="gz"/> <split> <simple>${header.CamelGroupedExchange}</simple> <bean ref="routeManager" method="route(*)"/> </split> </when> <when id="zip"> <simple>${file:name} regex '.*\.zip'</simple> <unmarshal ref="zip"/> <split> <simple>${header.CamelGroupedExchange}</simple> <bean ref="routeManager" method="route(*)"/> </split> </when> <otherwise> <stop/> </otherwise> </choice> <onException> <exception>java.lang.Exception</exception> <redeliveryPolicy maximumRedeliveries="0"/> <handled> <constant>false</constant> </handled> <log loggingLevel="ERROR" message="onException during from_OD : ${exception.message}\n${exception.stacktrace}"/> <to uri="file://{{gangplank.share_home}}/work/fromOD/.error/?tempFileName=${file:name}.partial"/> </onException> </route> Any ideas why I get what seems like the opposite of the expected behavior and how to fix? -Dave