How to resequencing messages in Apache Camel based on a specific element's value using XML DSL?

Viewed 94

Consider the following XML message:

<?xml version="1.0" encoding="UTF-8"?>
<Message>
  <HeaderSegment>
    <SortElement>ABC</SortElement>
  </HeaderSegment>
  <LineSegment>
    ...
  </LineSegment>
</Message>

How do I perform resequencing on SortElement element value?

(There will only be one HeaderSegment and one SortElement in each message)

<?xml version="1.0" encoding="UTF-8"?>
<blueprint>
  <camelContext xmlns="http://camel.apache.org/schema/blueprint">
    <route>
      <from uri="file:messages/incoming"/>
      <resequence>
        <!-- ??? -->
        <to uri="file:messages/outgoing"/>
      </resequence>
    </route>
  </camelContext>
</blueprint>

(Using Apache Camel 2.23.0)

1 Answers

You can use xpath expression to base your sort on "SortElement" value.

Exemple in java DSL:

from("direct:demo")
  .resequence( xpath("/Message/HeaderSegment/SortElement") )
Related