jfaath wrote:
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?


Do you mean you can't find any message from the errors queue? or there queue?

If you are using Camel 2.x, it may relate to StreamCache issue[1]

[1]http://camel.apache.org/stream-caching.html


Willem

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]http://camel.apache.org/error-handler.html

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





Reply via email to