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"class="org.apache.act
ivem
>> 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"><value>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/

Reply via email to