Could it be the spring-ws client returns a SOAP Fault and not an exception?
Camel error handler only reacts upon exceptions.

There is a flag you can enable on the route, handleFault=true, that
turns SOAP faults into exceptions,
and allow Camel error handler to react then.

On Mon, Oct 3, 2011 at 2:16 PM, Aaron Doyle <a_r_do...@yahoo.com> wrote:
> Hello,
>
> That did not seem to help fix my problem.  If I change my route to the
> following, the exception is caught and sent to the loadable failure queue.
>
>         <route id="loaderRoute">
>              <from uri="activemq:queue:loadable">
>              <doTry>
>                  <to uri="bean:loaderServiceClient?method=invokeService">
>                  <doCatch>
>                         <to uri="activemq:queue:loadableFailure" />
>                  </doCatch>
>             </doTry>
>          <route>
> Is there any way to do a redelivery with the doTry/doCatch?
>
> Back to the onException problem....
> The problem seems to be specific to a spring ws client.  The bean
> 'loaderServiceClient' is a spring ws client and the exceptions do not get
> handled, if I replace the 'to' uri with
> 'spring-ws:http://server.com:8080/service' the exception does not get
> handled either.  If I replace the 'to' uri with a test pojo where the method
> being called explicitly throws an exception, the exceptions are caught and
> handled by the onException.  Is it possible that there is something in the
> Spring WS Client that is eating the exception....
>
> Lastly, on the second part of my question from first email, does it seem
> possible that I have multiple consumers grabbing the same message off of the
> queue to load (which is what is causing the exception to be thrown.)  If I
> run with 1 consumer, it runs without exceptions.
>
> -Aaron
> From: Claus Ibsen <claus.ib...@gmail.com>
> To: users@camel.apache.org; Aaron Doyle <a_r_do...@yahoo.com>
> Sent: Monday, October 3, 2011 3:48 AM
> Subject: Re: Exception not getting caught and multiple consumers getting the
> same message
>
> Hi
>
> You need to add <handled><constant>true</constant></handled> to your
> <onException> to indicate you are handling this exception.
>
>
> On Sun, Oct 2, 2011 at 2:57 PM, Aaron Doyle <a_r_do...@yahoo.com> wrote:
>> Sorry bout that, hopefully this is better.
>>
>>
>> Message body
>>
>> <beans xmlns=http://www.springframework.org/schema/beans;
>> xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance;
>> xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd
>> http://camel.apache.org/schema/springhttp://camel.apache.org/schema/spring/camel-spring.xsd";;>
>>
>>
>> <beanid="propertyConfigurer"class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
>>         <property name="placeholderPrefix"value="${">
>>         <property name="placeholderSuffix"value="}">
>>         <property name="locations">
>>             <value>classpath:environment.properties<value>
>>         <property>
>> </bean>
>>
>> <camelContext id="camel"xmlns="http://camel.apache.org/schema/spring";>
>>         <onException>
>>             <exception>java.lang.Exception<exception>
>>             <redeliveryPolicy  maximumRedeliveries="2"
>> logStackTrace="true" logRetryAttempted="true">
>>             <to uri="activemq:queue:loadableFailure">
>>         <onException>
>>
>>         <routeid="loaderRoute">
>>             <from uri="activemq:queue:loadable">
>>             <to uri="bean:loaderServiceClient?method=invokeService">
>>         <route>
>> <camelContext>
>>
>> <bean
>> id="loaderServiceClient"class="com.tms.relay.ws.loader.client.LoaderServiceClient">
>>
>> <bean id="jmsConnectionFactory"c
>> lass="org.apache.activemq.ActiveMQConnectionFactory">
>>         <property name="brokerURL"value="${messageQueueURI}">
>> <bean>
>>
>> <bean id="pooledConnectionFactory"
>> class="org.apache.activemq.pool.PooledConnectionFactory">
>>         <property  name="maxConnections"  value="50">
>>         <property  name="maximumActive"  value="500">
>>         <property  name="connectionFactory"  ref="jmsConnectionFactory">
>> <bean>
>>
>> <bean id="jmsConfig"
>> class="org.apache.camel.component.jms.JmsConfiguration">
>>         <property  name="connectionFactory"
>>  ref="pooledConnectionFactory">
>>         <property  name="concurrentConsumers"  value="50">
>> <bean>
>>
>> <bean
>>  id="activemq"class="org.apache.activemq.camel.component.ActiveMQComponent">
>>         <property   name="configuration"  ref="jmsConfig">
>> <bean>
>>
>> <beans>
>>
>>
>> ________________________________
>> From: Claus Ibsen <claus.ib...@gmail.com>
>> To: users@camel.apache.org
>> Sent: Sunday, October 2, 2011 3:08 AM
>> Subject: Re: Exception not getting caught and multiple consumers getting
>> the same message
>>
>> Hi
>>
>> Can you post the XML so its readable :)
>>
>>
>> On Sat, Oct 1, 2011 at 6:40 PM, Aaron Doyle <a_r_do...@yahoo.com> wrote:
>>> I have a small route that reads from an activemq queue and sends the
>>> message to a bean, a service client that calls a web service, and am
>>> experiencing a few issues.  The onException configuration doesn't seem to
>>> get called when the bean throws an exception, and it seems like some of my
>>> concurrent consumers are getting the same message off the queue.  The queue
>>> is preloaded with 500 unique messages, the messages are eventually being
>>> loaded to a database, the exception being thrown states that a duplicate key
>>> was being inserted, which could only happen if two consumers picked up the
>>> same message ( I think ). After all 500 messages are processed, I end up
>>> with ~495 in the database and 5 missing (not on the failure queue defined by
>>> the onException.
>>>
>>> I am using ActiveMQ 5.4.1, Camel 2.8.1, Java 1.6.25, Spring 3.0.5 and
>>> Spring WS 2.0.1.
>>>
>>> Here is my configuration:
>>>
>>> *Note: I am able to catch the exception if I explicitly put a doTry and
>>> doCatch around the to endpoint in my route.  Also, everything works and
>>> loads into my db fine if I use 1 or 2 consumers.
>>>
>>>
>>> <beansxmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"http://www.springframework.org/schema/beans
>>> http://www.springframework.org/schema/beans/spring-beans.xsd
>>> http://camel.apache.org/schema/spring
>>>
>>
>>   http://camel.apache.org/schema/spring/camel-spring.xsd"xsi:schemaLocation=";>
>>  
>> <beanid="propertyConfigurer"class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"><propertyname="placeholderPrefix"value="${"/><propertyname="placeholderSuffix"value="}"/> <camelContextid="camel"xmlns="http://camel.apache.org/schema/spring";>    <onException>        <exception>java.lang.Exception</exception>        <redeliveryPolicymaximumRedeliveries="2"logStackTrace="true"logRetryAttempted="true"/>        <touri="activemq:queue:loadableFailure"/>     <routeid="loaderRoute">        <fromuri="activemq:queue:loadable"/>        <touri="bean:loaderServiceClient?method=invokeService"/>    </route>  <beanid="jmsConnectionFactory"class="org.apache.activemq.ActiveMQConnectionFactory">    <propertyname="brokerURL"value="${messageQueueURI}"/> <beanid="pooledConnectionFactory"cl
>> ass="org.apache.activem
>>>
>>> q.pool.PooledConnectionFactory">    <propertyname="maxConnections"value="50"/>    <propertyname="maximumActive"value="500"/>    <propertyname="connectionFactory"ref="jmsConnectionFactory"/> <beanid="jmsConfig"class="org.apache.camel.component.jms.JmsConfiguration">    <propertyname="connectionFactory"ref="pooledConnectionFactory"/>    <propertyname="concurrentConsumers"value="50"/> <beanid="activemq"class="org.apache.activemq.camel.component.ActiveMQComponent"> </beans>    <propertyname="configuration"ref="jmsConfig"/></bean></bean></bean></bean><beanid="loaderServiceClient"class="com.tms.relay.ws.loader.client.LoaderServiceClient"/></camelContext>    </onException><propertyname="locations"><va
>>> lue>classpath:environment.properties</value></property></bean>
>>
>>
>>
>> --
>> Claus Ibsen
>> -----------------
>> FuseSource
>> Email: cib...@fusesource.com
>> Web: http://fusesource.com
>> Twitter: davsclaus, fusenews
>> Blog: http://davsclaus.blogspot.com/
>> Author of Camel in Action: http://www.manning.com/ibsen/
>
>
>
> --
> Claus Ibsen
> -----------------
> FuseSource
> Email: cib...@fusesource.com
> Web: http://fusesource.com
> Twitter: davsclaus, fusenews
> Blog: http://davsclaus.blogspot.com/
> Author of Camel in Action: http://www.manning.com/ibsen/
>
>
>



-- 
Claus Ibsen
-----------------
FuseSource
Email: cib...@fusesource.com
Web: http://fusesource.com
Twitter: davsclaus, fusenews
Blog: http://davsclaus.blogspot.com/
Author of Camel in Action: http://www.manning.com/ibsen/

Reply via email to