camel-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From jfaath <>
Subject Re: Remote broker message behavior
Date Fri, 23 Apr 2010 22:10:46 GMT

Well, I figured out the one issue with the pending messages.  Guess I was
confused about the difference between a consumer (using "from") and a
producer (using "to").

Now I just have to figure out why the camel jms producer removes the message
body when sending the message to the queue.  At least, that's what I see in
the ActiveMQ console.  Any ideas?

jfaath wrote:
> Sure, here is the route:
>         from("servlet:///data-in").convertBodyTo(String.class)
>         .to("validator:schema-file.xsd")
>         .inOnly("jms:queue:inbound")
>         .choice()
>         .when().xpath("/a:data/a:dataLog1", ns)
>         	.unmarshal(jaxbDf)
>         	.beanRef("dataLog1Processor", "process")
> 		.marshal(jaxbDf)
>         	.to("jms:queue:processed")
>         .when().xpath("/a:data/a:dataLog2", ns)
>         	.unmarshal(jaxbDf)
>         	.beanRef("dataLog2Processor", "process")
> 		.marshal(jaxbDf)
>         	.to("jms:queue:" + processedQueue)
>         .otherwise().to("mock:invalid");
>        from("jms:queue:processed")
>        .choice()
>        .when(header("errorsFound").isEqualTo(true))
>       		.to("jms:queue:errors")
>        .otherwise().to("mock:finished");
> willem.jiang wrote:
>> Hi,
>> Can we have a look at your camel route?
>> Which version of camel are your using?
>> You issue relates to the ErrorHandler[1], you may need to go through the 
>>   wiki document for it.
>> [1]
>> Willem
>> jfaath wrote:
>>> I have a camel application that's using a remote ActiveMQ broker
>>> instance. 
>>> Messages come in to the application via HTTP and are sent to a "inbound"
>>> queue using "inOnly".  Messages are then processed and sent to a
>>> "processed"
>>> queue.  Finally, if an error occurred during processing, those messages
>>> are
>>> sent to an "errors" queue.
>>> So, ideally at the end, there should only be messages either in the
>>> "processed" queue or the "errors" queue.  Actually, I don't really care
>>> if
>>> they end up in the "processed" queue, but I definitely need to see the
>>> messages in the "errors" queue.
>>> However, what ends up happening is, full messages stay in the "inbound"
>>> queue under "pending messages", messages are processed as expected but
>>> nothing ends up in the "processed" queue and while messages resulting in
>>> errors do end up in the "errors" queue, the message body is gone.
>>> I'm using the ActiveMQ web console to inspect the queues.  The
>>> "processed"
>>> queue is the only one that has a consumer attached to it (which explains
>>> why
>>> it ends up with no messages).  Is this expected behavior? How can I have
>>> control over what is happening with messages in these queues using camel
>>> routes?  Really what I most need fixed is to not lose the body of the
>>> message in the error queue.
>>> -JF

View this message in context:
Sent from the Camel - Users (activemq) mailing list archive at

View raw message