On Mon, Oct 10, 2011 at 8:04 PM, Aaron Doyle <a_r_do...@yahoo.com> wrote:
> I figured out what the problem was, and the problem wasn't with Camel, it was 
> me.  Was doing something stupid in my web service that was causing the 
> problem.  Thanks so much for the quick responses and feedback.
>

Glad for sharing with us you found the cause of the problem.



> Best Regards,
> Aaron
>
>
> ________________________________
> From: Aaron Doyle <a_r_do...@yahoo.com>
> To: "users@camel.apache.org" <users@camel.apache.org>; Aaron Doyle 
> <a_r_do...@yahoo.com>
> Sent: Friday, October 7, 2011 12:00 PM
> Subject: Re: Exception not getting caught and multiple consumers getting the 
> same message
>
> my properties values did not display correctly, they are
> messageQueueURI=tcp://localhost:61616?jms.prefetchPolicy.queuePrefetch=1
> loaderServiceURI=spring-ws:http://localhost:8080/LoaderService
>
>
>
> ________________________________
> From: Aaron Doyle <a_r_do...@yahoo.com>
> To: "users@camel.apache.org" <users@camel.apache.org>
> Sent: Friday, October 7, 2011 11:55 AM
> Subject: Re: Exception not getting caught and multiple consumers getting the 
> same message
>
> I tried the handleFault=true attribute and that did not enable the exceptions 
> to get caught.
>
> The exceptions are caught when running one consumer, as soon as I increase 
> the number of consumers, exceptions are not caught and messages start getting 
> lost. I noticed that all 50 consumers are sharing the same connection, 
> whereas I would think that all consumers get there own connection...  Adding 
> a doTry/doCatch around the 'to' section of my route, does catch most of the 
> exceptions but still some messages seem to get lost... Is there any way with 
> 1 consumer that I can process multiple messages asynchronously?  Or that I 
> can force each consumer to get its own connection?  Has anyone else 
> experienced problems running multiple consumers off a message queue and 
> sending the messages to a spring-ws component?
>
>
> Here is my latest configuration:
> ** Note below 2 lines from my properites 
> file.tcploaderServiceURIspring-ws:http://localhost:8080/LoaderService=://localhost:61616?jms.prefetchPolicy.queuePrefetch=1
>
>         <bean id="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>
>
>         <bean id="jmsConnectionFactory" 
> class="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>
>
>         <camelContext id="camel" handleFault="true" 
> xmlns="http://camel.apache.org/schema/spring";>
>
>                 <endpoint id="loaderService" uri="${loaderServiceURI}" />
>
>                 <onException>
>                         <exception>java.lang.Exception</exception>
>                         <redeliveryPolicy redeliveryDelay="1000" 
> maximumRedeliveries="2" />
>                         <handled><constant>true</constant></handled>
>                         <to uri="activemq:queue:loadableFailure" />
>                 </onException>
>
>                 <route id="loaderWS">
>                         <from uri="activemq:queue:loadable" />
>                         <to ref="loaderService" />
>                 </route>
>
>         </camelContext>
>
>
> ________________________________
> From: Claus Ibsen <claus.ib...@gmail.com>
> To: "users@camel.apache.org" <users@camel.apache.org>
> Sent: Tuesday, October 4, 2011 11:50 AM
> Subject: Re: Exception not getting caught and multiple consumers getting the 
> same message
>
> 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/
>
>
>
> messageQueueURI=



-- 
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