Hi, first post here!

We have an instance of apache-activemq running which includes camel.

We are sending some messages to a queue called 'in' that look like this:

<?xml version="1.0" encoding="utf-8"?>
<mp:command xmlns:mp="http://www.blah/blah";  name="submit" >
 <body>...</body>
</mp:command>

and

<?xml version="1.0" encoding="utf-8"?>
<mp:event xmlns:mp="http://www.blah/blah";  name="status" >
 <body>...</body>
</mp:event>

We need to route the messages based on their root element name and content
of @name
so the above messages need to go to the endpoints called commands.submit and
events.status.

I created the following route to test the @name based matching:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<route autoStartup="true" inheritErrorHandler="true" id="generalin"
xmlns:ns2="http://camel.apache.org/schema/web"; xmlns="
http://camel.apache.org/schema/spring";>
    <from uri="activemq:in"/>
    <choice inheritErrorHandler="true" id="choice1">
        <when inheritErrorHandler="true">
            <xpath>//*[contains(@name,"submit")]</xpath>
            <to uri="activemq:commands.submit" inheritErrorHandler="true"
id="to2"/>
        </when>
        <otherwise inheritErrorHandler="true">
            <to uri="activemq:lostandfound" inheritErrorHandler="true"
id="to4"/>
        </otherwise>
    </choice>
</route>

This route works fine. It routes any messages where name contains 'submit'
to the right endpoint.

I then tried to modify the route so that it matched <mp:command>. I tried
changing the xpath to

<xpath>//command[contains(@name,"submit")]</xpath>
<xpath>//mp:command[contains(@name,"submit")]</xpath>

and neither worked. Also the message did not get routed to anywhere -ie it
didnt go to lostandfound.

I also tried adding xmlns:mp="http://www.blah/blah";  to the <route> part of
the route definition but it was removed when I saved the route.

Any advice appreciated.

Thanks, Tom

Reply via email to